现在的位置: 首页 > 综合 > 正文

codeforces 258(Div.2) C. Predict Outcome of the Game

2018年04月29日 ⁄ 综合 ⁄ 共 826字 ⁄ 字号 评论关闭

题意:有三个球队进行了N场比赛,其中K场已经比完了,但是你不知道结果。d1,d2是各自胜场的绝对值,比如一队和二队胜场差是d1,二队和三队胜场差是d2.问比完所有N场比赛是否存在各自都打平了。

题解:根据他们的两个胜场差d1,d2可以求出他们各自的胜场。但是因为d1,d2是绝对值,所以我们有四种情况需要考虑,比如(+d1,+d2).(+d1,-d2),(-d1,+d2),(-d1,-d2)判断他们是否符合已踢完K场的条件,是否剩下的场数能够使他们打平。嗯,就是这样,注意这几个条件如何去判断即可。

#include <bits/stdc++.h>
using namespace std;
#define LL __int64
int main()
{
	LL n,m,d1,d2,T;
	scanf("%I64d",&T);
	while (T--)
	{
		scanf("%I64d %I64d %I64d %I64d",&n,&m,&d1,&d2);
	//  cout<<d1<<d2<<endl;
		LL s,d,s1,s2,s3,D1,D2,d3,k=n-m;
		d=m-(d1+d2+d2);
		s=k-2*d1-d2;
		D1=m-(d1+d2);
		s1=k-(max(d1,d2)+abs(d1-d2));
		D2=m-(max(d1,d2)+abs(d1-d2));
		s2=k-(d1+d2);
		d3=m-(2*d1+d2);
		s3=k-d2*2-d1;
		if ((s % 3==0 && s>=0) && (d>=0 && d % 3==0))
			puts("yes");
		else if ((s1 % 3==0 && s1>=0) && (D1>=0 && D1 % 3==0))
			puts("yes");
		else if ((s2 % 3==0 && s2>=0) && (D2>=0 && D2 % 3==0))
			puts("yes");
		else if ((s3 % 3==0 && s3>=0) && (d3>=0 && d3 % 3==0))
			puts("yes");
		else puts("no");
	}
	return 0;
}

抱歉!评论已关闭.