首页 > 其他 > 详细

【math】【codeforces】451A Predict Outcome of the Game

时间:2016-04-13 02:07:22      阅读:227      评论:0      收藏:0      [点我收藏+]

http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=52099

 

有三只球队,一共有n场比赛,然后现在进行了k场,不知道输赢,只知道第一和第二的分数差是d1,第二和第三的分数差是d2,

问这样比赛是不是可能出现平局,注意每一场比赛没有平局。

 

如果n%3 != 0,肯定不会使得三个队伍平手,输出“no”。

设三个队在前K场比赛中分别赢了x1,x2,x3场,有|x1 - x2| = d1, | x2 - x3| = d2。

由于d1,d2分别有正负,共分为四种情况:

{x1 - x2 = d1, x2 - x3 = d2},{x1 - x2 = d1, x3 - x2 = d2},{x2 - x1 = d1, x2 - x3 = d2},{x2 - x1 = d1,x3 - x2 = d2}

只要有一种情况有可行解即可。

 

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 int main(){
 5     int T;
 6     ll n,m,d1,d2;
 7     scanf("%d",&T);
 8     while (T--){
 9         scanf("%I64d%I64d%I64d%I64d",&n,&m,&d1,&d2);
10         ll s,d,s1,s2,s3,D1,D2,d3,k=n-m;
11         d=m-(d1+2*d2);
12         s=k-(2*d1+d2);
13         D1=m-(d1+d2);
14         s1=k-(max(d1,d2)+abs(d1-d2));
15         D2=m-(max(d1,d2)+abs(d1-d2));
16         s2=k-(d1+d2);
17         d3=m-(2*d1+d2);
18         s3=k-(d2*2+d1);
19         if ((s % 3==0 && s>=0) && (d>=0 && d % 3==0)) puts("yes");
20         else if ((s1 % 3==0 && s1>=0) && (D1>=0 && D1 % 3==0)) puts("yes");
21         else if ((s2 % 3==0 && s2>=0) && (D2>=0 && D2 % 3==0)) puts("yes");
22         else if ((s3 % 3==0 && s3>=0) && (d3>=0 && d3 % 3==0)) puts("yes");
23         else puts("no");
24     }
25     return 0;
26 }

 

【math】【codeforces】451A Predict Outcome of the Game

原文:http://www.cnblogs.com/miaowTracy/p/5385211.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!