Codeforces Round #258 (Div. 2)

C. Predict Outcome of the Game
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

There are n games in a football tournament. Three teams are participating in it. Currently k games had already been played.

You are an avid football fan, but recently you missed the whole k games. Fortunately, you remember a guess of your friend for these k games. Your friend did not tell exact number of wins of each team, instead he thought that absolute difference between number of wins of first and second team will be d1 and that of between second and third team will be d2.

You don't want any of team win the tournament, that is each team should have the same number of wins after n games. That's why you want to know: does there exist a valid tournament satisfying the friend's guess such that no team will win this tournament?

Note that outcome of a match can not be a draw, it has to be either win or loss.

Input

The first line of the input contains a single integer corresponding to number of test cases t (1 ≤ t ≤ 105).

Each of the next t lines will contain four space-separated integers n, k, d1, d2 (1 ≤ n ≤ 1012; 0 ≤ k ≤ n; 0 ≤ d1, d2 ≤ k) — data for the current test case.

Output

For each test case, output a single line containing either "yes" if it is possible to have no winner of tournament, or "no" otherwise (without quotes).

Sample test(s)
Input
  1. 5
    3 0 0 0
    3 3 0 0
    6 4 1 0
    6 3 3 0
    3 3 3 2
Output
  1. yes
    yes
    yes
    no
    no
Note

Sample 1. There has not been any match up to now (k = 0, d1 = 0, d2 = 0). If there will be three matches (1-2, 2-3, 3-1) and each team wins once, then at the end each team will have 1 win.

Sample 2. You missed all the games (k = 3). As d1 = 0 and d2 = 0, and there is a way to play three games with no winner of tournament (described in the previous sample), the answer is "yes".

Sample 3. You missed 4 matches, and d1 = 1, d2 = 0. These four matches can be: 1-2 (win 2), 1-3 (win 3), 1-2 (win 1), 1-3 (win 1). Currently the first team has 2 wins, the second team has 1 win, the third team has 1 win. Two remaining matches can be: 1-2 (win 2), 1-3 (win 3). In the end all the teams have equal number of wins (2 wins).

题意:已知ABC 3个队已经打了k场比赛,一共要打n场比赛,已知之前AB的胜场数的差的绝对值、BC的胜场数的差的绝对值,求最后是否有可能三个队胜场相同。(每单场比赛必定会决出胜负,不会平)

题解:水题,就3个队,一共就几种情况,可以枚举判断。

·CF要的就是又快又稳,这种水题就是要怒枚举一发。已知两个绝对值,那么三个队的分数分布有4种情况,按升降来说明大概是“//" "/\" "\/" "\\"四种,定好了大小,然后根据已打场次k调整一下,就能得到4种已知胜场,看看能不能填平。

看代码可以发现我分了两个函数,非常专业。(?

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define ll long long
  14. #define usint unsigned int
  15. #define mz(array) memset(array, 0, sizeof(array))
  16. #define minf(array) memset(array, 0x3f, sizeof(array))
  17. #define REP(i,n) for(i=0;i<(n);i++)
  18. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  19. #define RD(x) scanf("%d",&x)
  20. #define RD2(x,y) scanf("%d%d",&x,&y)
  21. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  22. #define WN(x) printf("%d\n",x);
  23. #define RE freopen("D.in","r",stdin)
  24. #define WE freopen("1biao.out","w",stdout)
  25.  
  26. ll n,k,d1,d2;
  27. bool gank(const ll &x,const ll &y,const ll &z){
  28. ll a[];
  29. a[]=x;
  30. a[]=y;
  31. a[]=z;
  32. sort(a,a+);
  33. if(a[]+a[]+a[]<k){
  34. ll t=(k-a[]-a[]-a[])/;
  35. a[]+=t,a[]+=t,a[]+=t;
  36. }
  37. if(a[]<){a[]-=a[];a[]-=a[];a[]-=a[];}
  38. if(a[]+a[]+a[]!=k)return ;
  39. ll need=a[]-a[]+a[]-a[];
  40. if(need>n-k)return ;
  41. if((n-k-need)%!=)return ;
  42. return ;
  43. }
  44.  
  45. bool farm(){
  46. if(gank(,d1,d1+d2))return ;
  47. if(gank(,d1,d1-d2))return ;
  48. if(gank(d1,,d2))return ;
  49. if(gank(d1+d2,d2,))return ;
  50. return ;
  51. }
  52.  
  53. int main(){
  54. int T;
  55. scanf("%d",&T);
  56. while(T--){
  57. scanf("%I64d%I64d%I64d%I64d",&n,&k,&d1,&d2);
  58. if(farm())puts("yes");
  59. else puts("no");
  60. }
  61. return ;
  62. }

CF451C Predict Outcome of the Game 水题的更多相关文章

  1. Codeforces Round #258 (Div. 2) C. Predict Outcome of the Game 水题

    C. Predict Outcome of the Game 题目连接: http://codeforces.com/contest/451/problem/C Description There a ...

  2. HDOJ 2317. Nasty Hacks 模拟水题

    Nasty Hacks Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Tota ...

  3. ACM :漫漫上学路 -DP -水题

    CSU 1772 漫漫上学路 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Submit ...

  4. ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)

    1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 154  Solved: 112[ ...

  5. [poj2247] Humble Numbers (DP水题)

    DP 水题 Description A number whose only prime factors are 2,3,5 or 7 is called a humble number. The se ...

  6. gdutcode 1195: 相信我这是水题 GDUT中有个风云人物pigofzhou,是冰点奇迹队的主代码手,

    1195: 相信我这是水题 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 821  Solved: 219 Description GDUT中有个风云人 ...

  7. BZOJ 1303 CQOI2009 中位数图 水题

    1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2340  Solved: 1464[Submit][Statu ...

  8. 第十一届“蓝狐网络杯”湖南省大学生计算机程序设计竞赛 B - 大还是小? 字符串水题

    B - 大还是小? Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Description 输入两个实数,判断第一个数大 ...

  9. ACM水题

    ACM小白...非常费劲儿的学习中,我觉得目前我能做出来的都可以划分在水题的范围中...不断做,不断总结,随时更新 POJ: 1004 Financial Management 求平均值 杭电OJ: ...

随机推荐

  1. 【BZOJ-3238】差异 后缀数组 + 单调栈

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 1561  Solved: 734[Submit][Status] ...

  2. BZOJ 1088 扫雷Mine

    今天做了几道BZOJ的题,发现统观题目时还是很多很多都不会的,不过还是有几道时可以作的,以后要慢慢加强,争取多做题 BZOJ 1088 扫雷 其实本人平常不大玩扫雷的,就算玩也不是很好,不过看n*2的 ...

  3. 【poj2823】 Sliding Window

    http://poj.org/problem?id=2823 (题目链接) 题意 维护滑动窗口最大最小值. Solution sb单调队列 代码 // poj2823 #include<algo ...

  4. Vmware vsphere 网络架构

    VMware vSphere架构下服务器会虚拟出交换机来供ESX Host虚拟机来使用,虚拟交换机有两种,vSwitch虚拟交换机和vNetwork分布式虚拟交换机,每个ESX Host均有一个标准v ...

  5. Response 对象

    Response 对象用于将数据从服务器发送回浏览器. 页面跳转并传递参数 Response.Redirect("~/welcome.aspx?parameter1=one&para ...

  6. CDN网络(二)之配置和优化CDN核心缓存软件--squid

    前言 squid是众多CDN厂商使用的核心缓存软件,都在已有的基础上进行二次开发.在部署squid的时候,建议遵循下面的规范. 1. 使用大内存服务器 对于热点文件,我们让squid用内存缓存,这样大 ...

  7. IP地址、子网掩码、网关、DNS的关系

      什么是IP地址所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址.按照TCP/IP协议规定,IP地址用二进制来表示,每个IP地址长32bit,比特换算成字节,就是4个字节 ...

  8. BZOJ2124: 等差子序列

    题意:给一个 1 到 N 的排列{Ai},询问是否存在 1<=p1<p2<p3<p4<p5<…<pLen<=N(Len>=3),使得 Ap1,Ap ...

  9. Objective-C之字典

    //字典:(关键字 值) //插入代码字太小 //        NSArray *array = [NSArray array];//空数组 //        NSDictionary *dict ...

  10. 使用ultraiso制作启动盘

    1.以管理员方式运行Ultralso 2.点击菜单栏里的“启动”菜单下的“写入硬盘映像”命令,打开“写入硬盘映像”对话框. “硬盘驱动器”里就是选择你要刻录的U盘,这里演示用的是一张数码相机的内存卡. ...