NOIP提高组 Brothers
来源:互联网 发布:淘宝能买到迷彩awp 编辑:程序博客网 时间:2024/05/08 20:01
Description
在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了战争。战斗只会在相邻的两个城市之间爆发(共有一条边称之为相邻),并且只有当A讨厌B时,A才会对B发起战斗,结果必定是A获得这次战斗的胜利。当一方胜利后,他所进攻的城市就会变成进攻方的。许多战斗是同时发生的,我们称之为一场战役。当多场战役发生之后,剩下的王子将不再发生战争。
例如,如果有3个王子,那么战斗过程如下所示:
Data Constraint
2<=N<=100,2<=R,C<=100,1<=K<=100保证数据合法
Solution
考虑到2<=R,C<=100,1<=K<=100,直接模拟一下过程就好了。总时间复杂度为O(R* C*K)。
代码
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int maxn=105;const int f[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int a[2][maxn][maxn],q,n,m,p,i,t,j,k,l,x,y;int pan(int x){ if (x!=q-1) return x+1;return 0;}int main(){// freopen("data.in","r",stdin); scanf("%d%d%d%d",&q,&n,&m,&p); for (i=1;i<=n;i++) for (j=1;j<=m;j++) scanf("%d",&a[0][i][j]); for (l=1;l<=p;l++){ t=l%2; for (i=1;i<=n;i++) for (j=1;j<=m;j++) a[t][i][j]=a[1-t][i][j]; for (i=1;i<=n;i++) for (j=1;j<=m;j++) for (k=0;k<=3;k++){ x=i+f[k][0];y=j+f[k][1]; if (x<1 || y<1 || x>n || y>m) continue; if (a[1-t][x][y]==pan(a[1-t][i][j])) a[t][x][y]=a[1-t][i][j]; } } for (i=1;i<=n;i++){ for (j=1;j<=m;j++) printf("%d ",a[t][i][j]); printf("\n"); }}
3 0
- NOIP提高组 Brothers
- 【NOIP2016提高A组模拟9.9】Brothers
- 【NOIP2016提高A组模拟9.9】Brothers
- Brothers【NOIP2016提高A组模拟9.9】
- 【NOIP模拟】Brothers
- NOIP提高组 单峰
- NOIP提高组 积木
- NOIP提高组 看电影
- NOIP提高组 鼎纹
- NOIP提高组 千帆渡
- NOIP提高组 Crisis
- NOIP提高组 Word
- NOIP提高组 闭门造车
- NOIP提高组 爬山
- 【NOIP提高组】爬山
- 【NOIP提高组】Map
- 【NOIP提高组】矩阵
- 【NOIP提高组】整除
- iOS动画详解
- linux下安装软件
- HDU:FatMouse's Speed
- (转)android中src和background区别
- 一个程序员的顿悟:理想的程序员只比你多了6个一点点
- NOIP提高组 Brothers
- 【WriteUp】labyrenth CTF windows track挑战(上)
- Apple Mac OS 0.97太酷了。。。呵呵,顺便分享某版本Mac源码
- 【Get深一度】Win10网络类型切换 傻瓜级操作指南
- SpringAOP之我的理解(一)------动态代理
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- LeetCode 169. Majority Element
- visual studio和MATLAB下opencv配置
- linux搭建httpd