计蒜客-T2019 [NOIP2014]生活大爆炸版石头剪刀布

108 阅读1分钟

题目链接

[NOIP2014]生活大爆炸版石头剪刀布

思路

根据表格判断输赢。直接列出关系判断即可。 算是一道水题,但感觉写麻烦了,不知道有没有更简单的方法。 由于关系复杂,写的时候一定注意,不能写错。

代码

#include<iostream>
using namespace std;

int quan(int a,int b)
{
	//1 a win 0 ping -1 b win
	if(a==b)
		return 0;
	if((a==1&&b==0)||(a==0&&b==1))
		return (b>a?-1:1);
	if((a==1&&b==2)||(a==2&&b==1))
		return (b>a?-1:1);
	if((a==3&&b==2)||(a==2&&b==3))
		return (b>a?-1:1);
	if(( a==3 && b==4 ) || ( a==4 && b==3 ))
		return (a<b?1:-1);
	if(( a==2 && b==0 ) || ( a==0 && b==2 ))
		return (a<b?1:-1);
	if(( a==3 && b==0 ) || ( a==0 && b==3 ))
		return (a<b?1:-1);
	if(( a==3 && b==1 ) || ( a==1 && b==3 ))
		return (a<b?1:-1);
	if(( a==4 && b==2 ) || ( a==2 && b==4 ))
		return (a<b?1:-1);
	if(( a==4 && b==0 ) || ( a==0 && b==4 ))
		return (a<b?-1:1);
	if(( a==4 && b==1 ) || ( a==1 && b==4 ))
		return (a<b?-1:1);
}

int main()
{
	int aa=0,bb=0,n,na,nb,i,j=0,k=0;
	cin>>n>>na>>nb;
	int a[220],b[220];
	for(i=0;i<na;i++)
		cin>>a[i];
	for(i=0;i<nb;i++)
		cin>>b[i];
	for(i=1;i<=n;i++)
	{
		if(quan(a[j],b[k])==1)
			aa++;
		else if(quan(a[j],b[k])==-1)
			bb++;
		j++;k++;
		if(j==na)
			j=0;
		if(k==nb)
			k=0;
	}
	cout<<aa<<" "<<bb;
	return 0;
}