BZOJ1054 [HAOI2008]移動玩具__BZOJ

來源:互聯網
上載者:User

隨便寫個迭代A*搜一下就可以過了

#include<iostream>#include<cstdlib>#include<cstdio>#include<cstring>#include<cmath>#include<ctime>#include<algorithm>#include<iomanip>#include<vector>#include<stack>#include<queue>#include<map>#include<set>#include<bitset>using namespace std;#define MAXN 1010#define MAXM 1010#define ll long long#define INF 1000000000#define MOD 1000000007#define eps 1e-8struct data{int f;int g;int d;data(){}data(int _d,int _f);friend bool operator <(data x,data y){return x.f+x.g>y.f+y.g;}};char s[5];int S,T,D;int mi[20];int dis[1000010];int tim;priority_queue<data>q;data::data(int _d,int _f){d=_d;f=_f;g=0;int t=d^T;int i;for(i=0;i<16;i++){if(mi[i]&t){g++;}}}int read(){int i,j;int re=0;int now=1;for(i=1;i<=4;i++){scanf("%s",s+1);for(j=1;j<=4;j++){re+=(s[j]=='1')*mi[(i-1)*4+j-1];now<<=1;}}return re;}bool search(){int i;data x;q.push(data(S,0));memset(dis,0x3f,sizeof(dis));dis[S]=0;while(!q.empty()){x=q.top();q.pop();if(x.d==T){return 1;}if(x.f==D){continue ;}for(i=0;i<12;i++){if((x.d&mi[i])&&!(x.d&mi[i+4])){int t=x.d^mi[i]^mi[i+4];if(dis[t]>x.f+1){dis[t]=x.f+1;q.push(data(t,x.f+1));}}}for(i=4;i<16;i++){if((x.d&mi[i])&&!(x.d&mi[i-4])){int t=x.d^mi[i]^mi[i-4];if(dis[t]>x.f+1){dis[t]=x.f+1;q.push(data(t,x.f+1));}}}for(i=0;i<16;i++){if(i==3||i==7||i==11||i==15){continue ;}if((x.d&mi[i])&&!(x.d&mi[i+1])){int t=x.d^mi[i]^mi[i+1];if(dis[t]>x.f+1){dis[t]=x.f+1;q.push(data(t,x.f+1));}}}for(i=0;i<16;i++){if(i==0||i==4||i==8||i==12){continue ;}if((x.d&mi[i])&&!(x.d&mi[i-1])){int t=x.d^mi[i]^mi[i-1];if(dis[t]>x.f+1){dis[t]=x.f+1;q.push(data(t,x.f+1));}}}}return 0;}int main(){int i;mi[0]=1;for(i=1;i<16;i++){mi[i]=mi[i-1]<<1;}S=read();T=read();for(D=0;;D++){if(search()){printf("%d\n",D);return 0;}}return 0;}/*11110000111000101010010110100101*/


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.