码迷,mamicode.com
首页 > 其他好文 > 详细

神智无知(CF)

时间:2020-06-09 23:16:53      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:ace   一个人   ext   ||   span   names   can   个人操作   printf   

A. Matrix Game
题目链接:https://codeforces.ml/contest/1365/problem/A

对矩阵把不可操作的行列除去,得到一个h×w的矩阵

由于每当一个人操作一次,就会占去一行一列,最多操作比较h,w得较小的数为操作次数,当为奇数Ashish赢,偶数Vivek赢
 
    #include <iostream>
    using namespace std;
    int t,n,m,h,w;
    int map[57][57];
    int main(){
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d %d",&n,&m);
    		h=0,w=0;
    		
    		for(int i=1;i<=n;i++){
    			int ok=1;
    			for(int j=1;j<=m;j++){
    				scanf("%d",&map[i][j]);
    				if(map[i][j]==1) ok=0;
    			}
    			if(ok) h++;
    		}
    		for(int i=1;i<=m;i++){
    			int ok=1;
    			for(int j=1;j<=n;j++){
    				if(map[j][i]==1) ok=0;
    			}
    			if(ok) w++;
    		}
    //		cout<<h<<" "<<w<<endl;
    		int cnt=min(h,w);
    		if(cnt%2==0) printf("Vivek\n");
    		else printf("Ashish\n");
    	}
    }

 

B. Trouble Sort

只要b数组不全为0或1,就能把a数组非降序排列,特判a数组本就为非降序排列

    #include <iostream>
    #include <algorithm>
    using namespace std;
    int t,n,a[505],b[505],tp[505];
    int main(){
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d",&n);
    		for(int i=1;i<=n;i++) scanf("%d",&a[i]),tp[i]=a[i];
    		for(int j=1;j<=n;j++) scanf("%d",&b[j]);
    		sort(tp+1,tp+1+n);
    		int ok=0;
    		for(int i=1;i<=n;i++){
    			if(tp[i]!=a[i]) ok=1;
    		}
    		if(ok){
    			int sum=0;
    			for(int i=1;i<=n;i++) sum+=b[i];
    			if(sum==0||sum==n) printf("No\n");
    			else printf("Yes\n");
    		}else{
    			printf("Yes\n");
    		}
    	}
    }

 C. Rotation Matching

枚举b数组中bi右移与aj配对为元素对所需的步数,相同步数多的为元素对最多的

    #include <iostream>
    using namespace std;
    int n,a[200007],b[200007],vis[200007],bok[200007];
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) scanf("%d",&a[i]),vis[a[i]]=i;
    	for(int i=1;i<=n;i++) scanf("%d",&b[i]);
    	int ans=0;
    	for(int i=1;i<=n;i++){
    		int dis;
    		if(vis[b[i]]>=i) dis=vis[b[i]]-i;
    		else dis=vis[b[i]]+n-i;
    		bok[dis]++;
    		ans=max(ans,bok[dis]);
    	}
    	printf("%d\n",ans);
    }

 

 

神智无知(CF)

标签:ace   一个人   ext   ||   span   names   can   个人操作   printf   

原文地址:https://www.cnblogs.com/kksk/p/13081427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!