Codeforces Round #258 (Div. 2/C)/Codeforces451C_Predict Outcome of the Game(枚举)
解题报告
http://blog.csdn.net/juncoder/article/details/38102391
题意:
n场比赛当中k场是没看过的,对于这k场比赛,a,b,c三队赢的场次的关系是a队与b队的绝对值差d1,b队和c队绝对值差d2,求能否使三支球队的赢的场次同样。
思路:
|B-A|=d1
|C-B|=d2
A+B+C=k
这样就有4种情况,各自是:
B>A&&C<B
B>A&&C>B
B<A&&C<B
B<A&&C>B
分别算出在k场比赛中a,b,c三支队伍赢的场次,另外n-k场比赛分别给3支队伍加上,看看能否同样。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define LL long long
using namespace std; int main()
{
int t,i,j;
while(~scanf("%d",&t))
{
while(t--)
{
LL d1,d2,n,k,a,b,c;
scanf("%lld%lld%lld%lld",&n,&k,&d1,&d2);
int f=0;
LL kk=n/3;
//1
double fa=(double)((k+d2)-2*d1)/3;
if(fa>=0&&fa==(LL )fa)
{
a=(LL)fa;
b=d1+a;
c=b-d2;
if(a>=0&&b>=0&&c>=0&&b<=kk&&c<=kk&&a<=kk&&(kk-b+kk-a+kk-c)==(n-k))
{
f=1;
}
}
//2
fa=(double)((k-d2)-2*d1)/3;
if(fa>=0&&fa==(LL )fa)
{
a=(LL)fa;
b=d1+a;
c=b+d2;
if(a>=0&&b>=0&&c>=0&&b<=kk&&c<=kk&&a<=kk&&(kk-b+kk-a+kk-c)==(n-k))
{
f=1;
}
}
//3
fa=(double)((k+d2)+2*d1)/3;
if(fa>=0&&fa==(LL )fa)
{
a=(LL )fa;
b=a-d1;
c=b-d2;
if(a>=0&&b>=0&&c>=0&&b<=kk&&c<=kk&&a<=kk&&(kk-b+kk-a+kk-c)==(n-k))
{
f=1;
}
}
//4
fa=(double)((k-d2)+2*d1)/3;
if(fa>=0&&fa==(LL )fa)
{
a=(LL)fa;
b=a-d1;
c=b+d2;
if(a>=0&&b>=0&&c>=0&&b<=kk&&c<=kk&&a<=kk&&(kk-b+kk-a+kk-c)==(n-k))
{
f=1;
}
}
if(f==1)
printf("yes\n");
else printf("no\n");
}
}
return 0;
}
2 seconds
256 megabytes
standard input
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.
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.
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).
5
3 0 0 0
3 3 0 0
6 4 1 0
6 3 3 0
3 3 3 2
yes
yes
yes
no
no
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).
Codeforces Round #258 (Div. 2/C)/Codeforces451C_Predict Outcome of the Game(枚举)的更多相关文章
- 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 ...
- Codeforces Round #258 (Div. 2)[ABCD]
Codeforces Round #258 (Div. 2)[ABCD] ACM 题目地址:Codeforces Round #258 (Div. 2) A - Game With Sticks 题意 ...
- Codeforces Round #258 (Div. 2) 小结
A. Game With Sticks (451A) 水题一道,事实上无论你选取哪一个交叉点,结果都是行数列数都减一,那如今就是谁先减到行.列有一个为0,那么谁就赢了.因为Akshat先选,因此假设行 ...
- Codeforces Round #258 (Div. 2)-(A,B,C,D,E)
http://blog.csdn.net/rowanhaoa/article/details/38116713 A:Game With Sticks 水题.. . 每次操作,都会拿走一个横行,一个竖行 ...
- Codeforces Round #258 (Div. 2)
A - Game With Sticks 题目的意思: n个水平条,m个竖直条,组成网格,每次删除交点所在的行和列,两个人轮流删除,直到最后没有交点为止,最后不能再删除的人将输掉 解题思路: 每次删除 ...
- Codeforces Round #258 (Div. 2)(A,B,C,D)
题目链接 A. Game With Sticks time limit per test:1 secondmemory limit per test:256 megabytesinput:standa ...
- Codeforces Round #258 (Div. 2) B. Sort the Array
题目链接:http://codeforces.com/contest/451/problem/B 思路:首先找下降段的个数,假设下降段是大于等于2的,那么就直接输出no,假设下降段的个数为1,那么就把 ...
- Codeforces Round #258 (Div. 2) E. Devu and Flowers 容斥
E. Devu and Flowers 题目连接: http://codeforces.com/contest/451/problem/E Description Devu wants to deco ...
- Codeforces Round #258 (Div. 2) D. Count Good Substrings 水题
D. Count Good Substrings 题目连接: http://codeforces.com/contest/451/problem/D Description We call a str ...
随机推荐
- MFC 动态创建按钮
首先在对话框(模式对话框,无模式对话框)中添加一个ADD按钮,通过点击按钮产生的通告消息调用::OnBtnAdd()方法.此方法会在对话框的左上角创建一个按钮. 当然首先要在和次对话框相关联的类中添加 ...
- 实用的PHP正则表达式
正则表达式是程序开发中一个重要的元素,它提供用来描述或匹配文本的字符串,如特定的字符.词或算式等.但在某些情况下,用正则表达式去验证一个字符串比较复杂和费时.本文为你介绍10种常见的实用PHP正则表达 ...
- 【Leetcode】查找二叉树中任意结点的最近公共祖先(LCA问题)
寻找最近公共祖先,示例如下: 1 / \ 2 3 / \ / \ 4 5 6 7 / \ ...
- ACM学习-POJ-1003-Hangover
菜鸟学习ACM,纪录自己成长过程中的点滴. 学习的路上,与君共勉. ACM学习-POJ-1003-Hangover Hangover Time Limit: 1000MS Memory Limit ...
- HDU 4122 Alice's mooncake shop
单调队列,裸的!!坑死了,说好的“All the orders are sorted by the time in increasing order. 呢,我就当成严格上升的序列了,于是就各种错.测试 ...
- 蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 蓝牙和无线有什么区别?
蜂窝移动网络是什么,它和 Wi-Fi 有什么区别? 转自知乎用户的一个回答: 原题问的是"数据流量是什么",不知道怎么又被改成"蜂窝移动网络是什么"了.说下个人 ...
- asp.net web api的自托管模式HttpSelfHostServer可以以控制台程序或windows服务程序为宿主,不单单依赖于IIS web服务器
Self-Hosting ASP.NET Web API http://theshravan.net/self-hosting-asp-net-web-api/ http://www.piotrwal ...
- 自定义按照index和key访问的List
List<T>用起来比较方便,但是有时候要按照Index来访问List中的对象有些繁琐,所以想是不是扩展一下,既能按照Index来访问,又能按照Key访问. 实现方法: public cl ...
- Win32汇编开始 Hello Asm
今天开始学习Win32汇编 因为自己很多都是Windows方面 所以 接触一下Win32汇编 . ;.386指令集 .model flat,stdcall ;工作模式 option casemap:n ...
- Web QQ自动强制加好友代码
也许见过强行聊天的代码: tencent://Message/?Uin=574201314&websiteName=www.oicqzone.com&Menu=yes 但是你应该不知 ...