zoukankan      html  css  js  c++  java
  • cf451C-Predict Outcome of the Game

    http://codeforces.com/problemset/problem/451/C

    A - Predict Outcome of the Game
    Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u

    Description

    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 Input

    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

    Hint

    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,问说最后有没有可能三支队伍胜局数相同。

    思路:就是分类讨论。只需要讨论四种情况:如d1=3,d2=2,则三队的情况可能是(5,2,0),(3,0,2),(0,3,5),(0,3,1)。比如(5,2,0),这里表明至少已进行了7场,比较7是否比k小,且是否(k-7)是3的倍数,因为(6,3,1)等价于(5,2,0);然后需要考虑至少还需要进行的场数,至少再进行8场才能三队持平,比较8是否比(n-k)大,且(n-k-8)是否是3的倍数。

    代码:

     1 #include <fstream>
     2 #include <iostream>
     3 #include <algorithm>
     4 #include <cstdio>
     5 #include <cstring>
     6 #include <cmath>
     7 #include <cstdlib>
     8 
     9 using namespace std;
    10 
    11 #define PI acos(-1.0)
    12 #define EPS 1e-10
    13 #define lll __int64
    14 #define ll long long
    15 #define INF 0x7fffffff
    16 
    17 lll n,k,d1,d2,d11,d22;
    18 
    19 inline bool Check(lll x,lll y);
    20 
    21 int main(){
    22     //freopen("D:\input.in","r",stdin);
    23     //freopen("D:\output.out","w",stdout);
    24     int T;
    25     scanf("%d",&T);
    26     while(T--){
    27         scanf("%I64d %I64d %I64d %I64d",&n,&k,&d1,&d2);
    28         if(n%3==0){
    29             lll j1,j2,j3,j4;
    30             j1=d1+(d2<<1);
    31             j2=(d1<<1)+d2;
    32             j3=d1+d2;
    33             j4=(max(d1,d2)<<1)-min(d1,d2);
    34             if((Check(j1,k)&&Check(j2,n-k))||(Check(j1,n-k)&&Check(j2,k))||(Check(j3,k)&&Check(j4,n-k))||(Check(j3,n-k)&&Check(j4,k)))  puts("yes");
    35             else    puts("no");
    36         }else puts("no");
    37     }
    38     return 0;
    39 }
    40 inline bool Check(lll x,lll y){
    41     return x<=y&&(y-x)%3==0;
    42 }
    View Code
  • 相关阅读:
    iOS适配HTTPS,创建一个自签名的SSL证书(x509)具体步骤
    iOS UIWebView 访问https绕过证书验证的方法
    socket 同步阻塞传输数据与关闭
    cookie范例
    Cookie的实现
    服务器如何处理http请求
    Web 服务器与应用服务器的区别是什么?
    servlet
    Apache、Nginx与Tomcat的区别
    Http 请求处理流程
  • 原文地址:https://www.cnblogs.com/jiu0821/p/4394127.html
Copyright © 2011-2022 走看看