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 ...
随机推荐
- emacs使用指南
上大学的时候使用过几个简单的命令,用上windows后除了dos很少用命令行处理问题.现在MBP在手不用用emacs多可惜啊. 我上午搜索了下资料,都说emacs是神器,但是神不神看个人啦.这东西也不 ...
- C语言的本质(13)——指向指针的指针
指针可以指向基本类型,也可以指向复合类型,因此一个指针变量存放的可以是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量.由于指针变量直接指向变量,所以称为"单级间址".而 ...
- they're hiring
Gather Health ⋅ Careers Careers at Gather
- 改变DM6467的内存划分
上次改过bbxm的http://blog.csdn.net/godofdsp/article/details/9377515,这次搞6467又遇到同样的问题了.按照bbxm的方法修改了内存划分,运行时 ...
- 从ora10g 刷数据到 8I基本操作步骤
从ora10g 刷数据到 8I基本操作步骤 master :oracle 10g snapshot site: oralce 8i 在oracle 8i 中物化视图称为快照,oracle 8i建快照的 ...
- 自制证书搭建https服务
第一步,自制CA证书和Server证书,私钥 自制CA私钥 openssl genrsa -des3 -out ca.key 4096 自制CA证书 openssl req -new -x509 -d ...
- 面向对象继承实例(a如何继承b)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Metropolis Hasting算法
Metropolis Hasting Algorithm: MH算法也是一种基于模拟的MCMC技术,一个非常重要的应用是从给定的概率分布中抽样.主要原理是构造了一个精妙的Markov链,使得该链的稳态 ...
- 从Ecma规范深入理解js中的this的指向
this是面向对象编程中的一个概念,它一般指向当前方法调用所在的对象,这一点在java.c++这类比较严格的面向对象编程语言里是非常明确的.但是在javascript中,this的定义要灵活许多,如果 ...
- 点击TextView浏览器打开指定网页
直接上代码: /** * 点击跳转到版权页面 */ private void getCopyRight() { // TODO Auto-generated method stub TextView ...