hdu 2337 Escape from Enemy Territory (预处理+二分+宽搜)
来源:互联网 发布:北京网络微信投票公司 编辑:程序博客网 时间:2024/06/05 07:34
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<queue>#include<string>#define le_f le=(le+1)%500000;#define ri_f ri=(ri+1)%500000;#include<map>using namespace std;const int INF=0x3f3f3f3f;const int MAXN=1200+5;const int MAXM=1200;int done[MAXN][MAXM];int n,X,Y,sx,sy,ex,ey,mid,le,ri;int dx[]={0,0,1,-1};int dy[]={1,-1,0,0};struct node{int x,y,w;node(int xx=0,int yy=0,int ss=0){x=xx;y=yy;w=ss;}}enemy[10500],q[520000];int MAX(int a,int b){return a>b?a:b;}int MIN(int a,int b){return a<b?a:b;}bool is_ill(int x,int y){if(x<0||x>=X||y<0||y>=Y)return 1;return 0;}void preslove(){int mmid=mid-1;memset(done,0,sizeof(done));int i,j,k;for(j=1;j<=n;j++)for(i=enemy[j].x-mmid;i<=enemy[j].x+mmid;i++){int a=enemy[j].y+(mmid-abs(enemy[j].x-i));int b=enemy[j].y-(mmid-abs(enemy[j].x-i));if(!is_ill(i,a))done[i][a]=1;if(!is_ill(i,b))done[i][b]=1;}}int bfs(){int i;for(i=1;i<=n;i++)if(abs(enemy[i].x-sx)+abs(enemy[i].y-sy)<mid||abs(enemy[i].x-ex)+abs(enemy[i].y-ey)<mid)return -1;preslove();le=ri=0;q[ri]=node(sx,sy,0);ri_f;//预处理,相当于ri++;done[sx][sy]=1;while(le!=ri){node e=q[le];le_f;for(i=0;i<4;i++){int curx=e.x+dx[i];int cury=e.y+dy[i];if(is_ill(curx,cury)||done[curx][cury])continue;if(curx==ex&&cury==ey)return e.w+1;q[ri]=node(curx,cury,e.w+1);ri_f;done[curx][cury]=1;}}return -1;}int main(){//freopen("123.txt","r",stdin);int N,m,i;while(cin>>N)while(N--){scanf("%d%d%d",&n,&X,&Y);scanf("%d%d%d%d",&sx,&sy,&ex,&ey);for(i=1;i<=n;i++)scanf("%d%d",&enemy[i].x,&enemy[i].y);if(sx==ex&&sy==ey){printf("%d %d\n",0,0);}int le=0,ri=X+Y,ans;while(le<ri){mid=(le+ri)/2;if(bfs()==-1)ri=mid;else{ans=mid;le=mid+1;}}printf("%d %d\n",ans,(mid=ans,bfs()));}return 0;}
0 0
- hdu 2337 Escape from Enemy Territory (预处理+二分+宽搜)
- hdu 2337 Escape from Enemy Territory (预处理+二分+搜索)
- hdu 2337 Escape from Enemy Territory (二分枚举+预处理+bfs)
- hdu 2337 Escape from Enemy Territory (presolve bfs +bfs+二分)
- HDU 2337 Escape from Enemy Territory(BFS+二分优化)
- hdu 2337 Escape from Enemy Territory
- POJ 3601 Escape from Enemy Territory (二分+BFS+预处理)
- hdu2337 Escape From Enemy Territory---二分bfs+预处理
- poj 3501 Escape from Enemy Territory(预处理&二分&bfs)
- Escape from Enemy Territory(二分+bfs)
- hdu2337Escape from Enemy Territory(预处理+二分+bfs)
- poj 3501 Escape from Enemy Territory 二分+bfs
- POJ 3501 - Escape from Enemy Territory
- 3094Escape from Enemy Territory——zoj
- poj3501Escape from Enemy Territory||hdu2337Escape from Enemy Territory
- HDU 3533 Escape 预处理+bfs
- HDU 1813 Escape from Tetris
- HDU 1813 Escape from Tetris
- 同一个表单,多次实例化
- 程序员如何尽快变的稍微专业一点
- 重载内核全程分析笔记
- QT 的信号与槽机制介绍
- win8下安装ethreal
- hdu 2337 Escape from Enemy Territory (预处理+二分+宽搜)
- JAVA代理模式与动态代理模式
- 有用的Web或者手机UI设计工具
- Openfire服务端源代码开发配置指南
- OCP 1Z0 053 32
- 神奇的图像处理算法
- java.lang.UnsupportedClassVersionError: Unsupported major.minor version 49.0的错误 [转]
- Filter系列五 谈谈启动方面
- 为了您心甘情愿-香味营销