[Codeforces] Round #354 (Div. 2)(E题艹不出)
2016-05-30 16:42
316 查看
A题题意:给定一个1到n的排列,可以交换其中某一对数,求1与n的距离最大值
View Code
#include<bits/stdc++.h> using namespace std; #define fir first #define sec second #define mp make_pair #define maxn 1005 char s[maxn]; int n,m,poi[maxn][maxn][4][4],vis[maxn][maxn][4]; typedef pair<pair<int,int>,int>pii; queue<pii>Q; int dir[4][2]={{0,-1},{-1,0},{0,1},{1,0}}; void bfs(){ int sx,sy,tx,ty; scanf("%d%d%d%d",&sx,&sy,&tx,&ty); vis[sx][sy][0]=1; Q.push(mp(mp(sx,sy),0)); int ans=0; while(!Q.empty()){ pii tmp=Q.front(); Q.pop(); int x=tmp.fir.fir,y=tmp.fir.sec,d=tmp.sec; if(x==tx&&y==ty){ ans=vis[tx][ty][d]; break; } if(!vis[x][y][(d+1)%4]){ vis[x][y][(d+1)%4]=vis[x][y][d]+1; Q.push(mp(mp(x,y),(d+1)%4)); } for(int i=0;i<4;i++){ int xx=x+dir[i][0],yy=y+dir[i][1]; if(xx<1||xx>n||yy<1||yy>m)continue; if(vis[xx][yy][d])continue; if(poi[x][y][d][i]&&poi[xx][yy][d][(i+2)%4]){ vis[xx][yy][d]=vis[x][y][d]+1; Q.push(mp(mp(xx,yy),d)); } } } printf("%d\n",ans-1); } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%s",s+1); for(int j=1;j<=m;j++){ if(s[j]=='+')poi[i][j][0][0]=poi[i][j][0][1]=poi[i][j][0][2]=poi[i][j][0][3]=1; if(s[j]=='-')poi[i][j][0][0]=poi[i][j][0][2]=1; if(s[j]=='|')poi[i][j][0][1]=poi[i][j][0][3]=1; if(s[j]=='^')poi[i][j][0][1]=1; if(s[j]=='>')poi[i][j][0][2]=1; if(s[j]=='<')poi[i][j][0][0]=1; if(s[j]=='v')poi[i][j][0][3]=1; if(s[j]=='L')poi[i][j][0][1]=poi[i][j][0][2]=poi[i][j][0][3]=1; if(s[j]=='R')poi[i][j][0][0]=poi[i][j][0][1]=poi[i][j][0][3]=1; if(s[j]=='U')poi[i][j][0][0]=poi[i][j][0][2]=poi[i][j][0][3]=1; if(s[j]=='D')poi[i][j][0][0]=poi[i][j][0][1]=poi[i][j][0][2]=1; } } for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) for(int k=1;k<4;k++) for(int l=0;l<4;l++) poi[i][j][k][(l+k)%4]=poi[i][j][0][l]; bfs(); return 0; }
View Code
相关文章推荐
- 解决线程同步带来的访问冲突问题
- AdnroidStudio下javaDoc任务相关配置
- 关于PagerAdapter的instantiateItem方法的执行次数
- Android控件vizible区别
- Centos下修改hostname
- ApacheDS 2.0__Basic User Guide 1.4.4 - Configure logging (基础用户指导手册)
- 朋友圈一个简单的看图功能
- h5嵌入android的视频播放器
- svn
- ExQuilla 破解
- No JREs in workspace compatible with specified execution environment: JavaSE-1.8,java
- 如何让WPF程序用上MVVM模式
- ASP.NET jquery.uploadify上传控件中文乱码解决办法(转)
- JAVA温习:UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现
- PHP路由模式Path_Info模式
- 线段树
- Eclipse平台下,Maven环境设配置
- handlebars自定义遍历
- Vim使用技巧及基本命令分类
- Android studio翻译插件,告别蒙逼