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

题意:有三个球队进行了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;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值