zoukankan      html  css  js  c++  java
  • Jzoj4764 Brothers

    在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。
    在国王死后,这种不好的关系使得王子之间爆发了战争。战斗只会在相邻的两个城市之间爆发(共有一条边称之为相邻),并且只有当A讨厌B时,A才会对B发起战斗,结果必定是A获得这次战斗的胜利。当一方胜利后,他所进攻的城市就会变成进攻方的。许多战斗是同时发生的,我们称之为一场战役。当多场战役发生之后,剩下的王子将不再发生战争。
    例如,如果有3个王子,那么战斗过程如下所示:

    我们发现数据足够小所以可以暴力,O(R^C^K)

    #include<stdio.h>
    #include<string.h>
    const int w[2][4]={{0,0,-1,1},{-1,1,0,0}};
    int n,r,c,k,s[110][110],t[110][110];
    inline int cal(int x){ return x>1?x-1:n; }
    int main(){
    	scanf("%d%d%d%d",&n,&r,&c,&k);
    	for(int i=1;i<=r;++i)
    		for(int j=1;j<=c;++j)
    			scanf("%d",s[i]+j),s[i][j]++;
    	memcpy(t,s,sizeof s);
    	for(;k--;){
    		for(int i=1;i<=r;++i)
    			for(int j=1;j<=c;++j){
    				for(int x=0;x<4;++x)
    					if(s[i+w[0][x]][j+w[1][x]]==cal(s[i][j])) t[i][j]=cal(s[i][j]);
    			}
    		memcpy(s,t,sizeof s);
    	}
    	for(int i=1;i<=r;++i,puts(""))
    		for(int j=1;j<=c;++j)
    			printf("%d ",s[i][j]-1);
    }

  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/Extended-Ash/p/9477284.html
Copyright © 2011-2022 走看看