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 kgames.
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
5
3 0 0 0
3 3 0 0
6 4 1 0
6 3 3 0
3 3 3 2
output
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).

题目大意:

有n场比赛,你错过了k场,然后再错过的k长中,一队与二队的胜利差值为d1,二队与三队的胜利差值为d2。如若有可能。三支队伍获胜次数都一样,则输出yes。否则输出no

解法:

比較有趣且复杂的模拟题,我们能够想象成三个柱子,已知第一个柱子跟第二个柱子的高度差的绝对值。第二个柱子跟第三个柱子高度差的绝对值,如今还有n-k个砖(1高度)。要求使得三个柱子高度一样。

首先。给了d1和d2。我们能够枚举一下有那几种基本情况:

1.   d1, 0, d2;

2.   0, d1, d1+d2;

3.   0, d2, d1+d2;

4.   0, d1, d1-d2;

5.   0, d2, d2-d1;

当中4和5这两种情况,取决于d1-d2是否为正数,事实上两种是一种情况=_=#。

然后。依据这5种情况,对于每一种情况,x,y。z都必须 >= 0,且  x + y + z <= k && (k - x - y - z) % 3 == 0。  这里我们是为了保证我们枚举的情况是否符合基本要求:三个队伍的比赛次数为k。

接下来,我们须要保证的是,(n-k)%3 == 0 && n/3 >= x, y, z)。

代码:

#include <iostream>
#include <cstdio>
#define LL long long using namespace std; LL n, k, d1, d2; bool check(LL x, LL y, LL z) {
if (x < 0 || y < 0 || z < 0) return false;
if (x + y + z > k) return false;
if ((k-(x+y+z))%3 != 0) return false; LL tmp = x+y+z+(n-k);
LL dv = tmp/3;
LL md = tmp%3; if (md == 0 && x <= dv && y <= dv && z <= dv)
return true;
else
return false;
} void solve() {
cin >> n >> k >> d1 >> d2; if (check(d1, 0, d2))
printf("yes\n");
else if (check(0, d1, d1+d2))
printf("yes\n");
else if (check(0, d2, d1+d2))
printf("yes\n");
else if (check(0, d1, d1-d2))
printf("yes\n");
else if (check(0, d2, d2-d1))
printf("yes\n");
else
printf("no\n");
} int main() {
int tcase;
cin >> tcase; while (tcase--) {
solve();
}
}

codeforces Round #258(div2) C解题报告的更多相关文章

  1. codeforces Round #258(div2) D解题报告

    D. Count Good Substrings time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  2. codeforces Round #259(div2) C解题报告

    C. Little Pony and Expected Maximum time limit per test 1 second memory limit per test 256 megabytes ...

  3. Codeforces Round #382 (Div. 2) 解题报告

    CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...

  4. Codeforces Round #324 (Div. 2)解题报告

    ---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...

  5. Codeforces Round #380 (Div. 2) 解题报告

    第一次全程参加的CF比赛(虽然过了D题之后就开始干别的去了),人生第一次codeforces上分--(或许之前的比赛如果都参加全程也不会那么惨吧),终于回到了specialist的行列,感动~.虽然最 ...

  6. Codeforces Round #281 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/493 A题 写完后就交了,然后WA了,又读了一遍题,没找出错误后就开始搞B题了,后来回头重做的时候才发现,球员被红牌罚下场后还可 ...

  7. Codeforces Round #277 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/486 A题.Calculating Function 奇偶性判断,简单推导公式. #include<cstdio> ...

  8. Codeforces Round #276 (Div. 2) 解题报告

    题目地址:http://codeforces.com/contest/485 A题.Factory 模拟.判断是否出现循环,如果出现,肯定不可能. 代码: #include<cstdio> ...

  9. Codeforces Round #350 (Div. 2)解题报告

    codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...

随机推荐

  1. linux下如何使用sftp命令进行文件上传和下载

    sftp 是一个交互式文件传输程式.它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性.下边就简单介绍一下如何远程连接主机,进行文件的上传和下载,以及一些相关操作. 举例,如远程主机的 IP ...

  2. iOS开发之判断手机号和邮箱 正则表达式

    #pragma mark --判断手机号合法性 + (BOOL)checkPhone:(NSString *)phoneNumber { NSString *regex = @"^((13[ ...

  3. Java 介绍比较全面的一遍文章

    Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称.用Java实现的HotJava浏览器(支持Java ...

  4. Run as ant build每次都执行两次

    因为用了selenium+testng+ant的框架,所以每次执行自动化,我就run as ant build.发现测试每次都执行两次,很奇怪.因为也没有影响到测试结果,所以一开始也就let it g ...

  5. Web Api跨域登录问题

    最近项目第一次尝试使用web api,照搬了一般mvc的Forms登录方式,在和前端对接的时候出现一个问题: 前端使用ajax调用登录接口完成登录后,再调用别的接口,被判断为未登录. 如果直接在浏览器 ...

  6. 5.20 mybatis反向生成的映射文件xml(如果需要自己定义其他sql语句时如下)

    解决mybatis-generator 生成的mapper.xml覆盖自定义sql的问题 mybatis-generator是个好工具,一建即可生成基本增删改成功能的mapper.xml.但这些是不够 ...

  7. linux 新添加的硬盘格式化并挂载到目录下

    需求: 新增加一块硬盘sdb,将sdb分区,只分一个区,格式化,挂载到目录/ssd下. 1.  查看现在已有的分区状态 # df –l 图中显示,没有看到sdb硬盘 2.  查看服务器安装的硬盘状态( ...

  8. mongodb 下载与安装文档

    MongoDB数据库安装及配置环境(windows10系统)   windows10系统下MongoDB的安装及环境配置: MongoDB的安装 下载地址: https://www.mongodb.c ...

  9. rev

    功能说明:反向输出文件内容.   字符串反转   文本反转

  10. 点击button 触发另一个button 事件

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs&quo ...