Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
是对答案的二分,就是上下界的差,二分后再枚举就很快了In Reply To:谁能给一点更详细的提示,这道题各种方法我都tle了,dfs,bfs,现在我是用booldfill,对下界和上届同时枚举,然后看是否可行,我看了论坛,不知道二分是指的对什么二分 Posted by:cpp051300448324 at 2005-05-13 12:52:12 > #include<iostream> > #include<queue> > #include<fstream> > > using namespace std; > > #define max(a,b) (a>b?a:b) > #define min(a,b) (a<b?a:b) > int diff; //diff 是高度差 > int low,high; //low high上界和下界 > int N; > queue<pair<int,int> >que; > bool signal; //判断完成标志 > int h[200][200]; > > bool num[111]={0}; //记录值是否出现 > > int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}}; > > void bloodfill(bool used[200][200]){ //bloodfill判定在上界和下界的范围是否可以完成 > if(que.empty())return; > pair<int,int> pos=que.front(); > que.pop(); > > if(pos.first==N-1&&pos.second==N-1){ > signal=1; > > return ; > } > int x,y; > int i; > for(i=0;i<4;i++){ > x=pos.first+dir[i][0]; > y=pos.second+dir[i][1]; > if(x>=0&&x<N&&y>=0&&y<N&&used[x][y]==0&&h[x][y]<=high&&h[x][y]>=low){ > used[x][y]=1; > que.push(make_pair(x,y)); > > } > } > bloodfill(used); > } > > int main(){ > ifstream cin("tmp.txt"); > cin>>N; > int i,j; > int max_n,min_n; > for(i=0;i<N;i++){ > for(j=0;j<N;j++){ > cin>>h[i][j]; > num[h[i][j]]=1; > } > } > for(i=0;i<=N;i++){ > if(num[i]==1)break; > } > min_n=i; > for(i=N;i>=0;i--){ > if(num[i])break; > } > max_n=i; > int limit_low=min(h[0][0],h[N-1][N-1]); > int limit_high=max(h[0][0],h[N-1][N-1]); > diff=limit_high-limit_low; > for(;;diff++){ //枚举,min_n<=low<=low_limit且limit_high<=high<=max_n&&lwoh > for(low=limit_low;low>=min_n&&low+diff>=limit_high&&low+diff<=max_n;low--){ > if(num[low]==0)continue; > high=low+diff; > if(num[high]==0)continue; > bool used[200][200]={0}; > > que.push(make_pair(0,0)); > used[0][0]=1; > signal=0; > bloodfill(used); > if(signal){ > goto end; > } > } > } > end: > cout<<diff<<endl; > system("pause"); > return 0; > } > > > > > Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator