首页 > 其他分享 >Codeforces Round 920 (Div. 3)----->E. Eat the Chip

Codeforces Round 920 (Div. 3)----->E. Eat the Chip

时间:2024-03-19 12:03:58浏览次数:31  
标签:typedef y2 cout Chip Codeforces include y1 平局 Round

一,思路:

1.这是一道博弈论的题目(两个人都绝顶聪明,所以每个人都会按最优方案进行)。这题你会发现,两个人从一开始就已经确定了结局。

2.如假如他们俩的棋子在竖直方向上距离相差的值是偶数,那么一定就两个结果Alice赢或者平局,反之奇数则是Bob赢或者平局(仔细分析一下就能得知)。

3.所以换位思考一下,当你知道你一定赢不了,那么你肯定是尽量争取平局,所以你肯定会逃跑,则另一个人则是追。那么现在问题就变成,他能不能追上。那么判断能否追上其实只要看他们交汇的哪一行他们横向方向上的位置情况来分析。(具体看注释)。

二,代码:

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

const int N=2e5+10;

typedef  long long ll;
typedef pair<int,int> pii;

void Solved() {

//这里我刚开始,没注意题目的x是指上下方向,我这里是左右方向
    int h,w,x1,x2,y1,y2;
    cin>>h>>w>>y1>>x1>>y2>>x2;


//假如一开始就在同一行或者错开了,那么肯定平局。
    if((y2-y1)<=0){
        cout<<"Draw"<<endl;
        return;
    }


    if((y2-y1)%2!=0){
        //Alice赢或者平局

        int t1,t2;

//根据x1和x2的相对位置,确定追击和逃跑方向

        if(x1<x2){

//注意不能出边界
//这里是直接算出,他们到达交界出分别可以走(y2-y1)/2+1,(y2-y1)/2步。

             t1=min(x1+(y2-y1)/2+1,w);
             t2=min(x2+(y2-y1)/2,w);


            if(t1>=t2) cout<<"Alice"<<endl;
            else cout<<"Draw"<<endl;

        }else{
             t1=max(x1-(y2-y1)/2-1,1);
             t2=max(x2-(y2-y1)/2,1);



            if(t1<=t2) cout<<"Alice"<<endl;
            else cout<<"Draw"<<endl;
        }



    }else{
        //Bob赢或者平局

        int t1,t2;

        if(x1<x2){
            t1=max(x1-(y2-y1)/2,1);
            t2=max(x2-(y2-y1)/2,1);

            if(t2<=t1) cout<<"Bob"<<endl;
            else cout<<"Draw"<<endl;

        }else{
            t1=min(x1+(y2-y1)/2,w);
            t2=min(x2+(y2-y1)/2,w);

            if(t2>=t1) cout<<"Bob"<<endl;
            else cout<<"Draw"<<endl;
        }

    }
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t;
    cin>>t;

    while(t--) {
        Solved();
    }
    return 0;
}

标签:typedef,y2,cout,Chip,Codeforces,include,y1,平局,Round
From: https://blog.csdn.net/qq_75103498/article/details/136837590

相关文章

  • Codeforces Round 918 (Div. 4)----->E. Romantic Glasses
    一,思路:这题是一道前缀和的扩展题。题目要我们求是否有一个区间内的奇偶之和是否相等,我们可以对数组重新赋值,奇数位赋值为负数,偶数位不变。这样我们后面求前缀和,只要看有没有一段区间和为零的。二,代码:#include<iostream>#include<cstring>#include<algorithm>#include<vec......
  • 复旦勰码 3 月月赛 II & ZHYOI Round 4
    【LGR-179-Div.2】复旦勰码3月月赛II&ZHYOIRound4\(T1\)luoguP10251农场\(100pts\)注意到未注明给的是哪两个对角顶点。赛时没注意到这一点,并因此吃了发罚时。点击查看代码intmain(){lln,x1,y1,x2,y2,xmax=-0x7f7f7f7f,xmin=0x7f7f7f7f,ymax=-0x7f7f......
  • CodeForces 1943D2 Counting Is Fun (Hard Version)
    洛谷传送门CF传送门被自己的赛时智障操作气笑了。谁告诉你容斥钦定了几个要记到状态里面的。。。/tuu显然先找“好数组”的充要条件。对原数组\(a\)差分,设\(b_i=a_i-a_{i-1}\)。那么一次可以选择一对\((i,j)\)满足\(i\lej-2\),然后给\(b_i\)减\(1\),给\(b_......
  • Codeforces Round 933 G. Rudolf and Subway
    原题链接:Problem-G-Codeforces思路:根据题意可知相同颜色的边一定是联通的,那么就可以设置虚点,例如1-2,2-3,3-4边的颜色都是相同的,那么就可以设置一个特殊的点例如设置为10,那么这三条边就可以改成1-10,10-2,2-10,10-3,3-10,10-4,从点到虚点需要1的代价,但是从虚点到其他点不需要代价,......
  • CodeForces 1943C Tree Compass
    洛谷传送门CF传送门发现对于一条链,一次操作最多能染黑这条链上的\(2\)个点。所以我们把直径拎出来,设直径长度为\(d\)。考虑一条长度为\(d\)的链至少要多少次能全染黑。若\(d\)为奇数,显然从直径中点\(u\)开始做\((u,0),(u,1),\ldots,(u,\frac{d-1}{2})\)......
  • cfRound933div3-E题解
    E-RudolfandkBridges题意:选择的桥在连续的行中,每个桥的支架安装位置是可以不一样的.做法:赛时也感觉也感觉是dp,但是害怕dp,就选择了逃避.往贪心方向想,认为每次到了每个跳板都要跳到最远距离,实际上这样是不行的.很明显,可能存在近一点的点花费更少。实际上是dp,而且也不......
  • Codeforces Round 933 Rudolf and k Bridges
    原题链接:Problem-E-Codeforces题目大意:给一个行为n列为m的河流二维数组,数字代表河流的深度。题目要求连续建造k座桥,桥的定义是从第一列到第m列,每隔d需要按照支架,安装支架的代价是深度+1。问安装最少需要多少代价?思路:单调队列优化dp,dp数组只需要一维,dp[i]的含义是从1到i建......
  • codeforces 1931E
    题目链接简介:对一些数字,余念安可以反转一个数字,齐夏将两个数字首尾相连变为一个数字。每个人都采取最优策略。名单上只剩下一个号码。如果该整数不小于 10的m次方,则齐夏获胜。否则余念安就赢了。分析:博弈论问题,结局已经确定,可知变成了位数个数之争,齐夏要通过合并数字使得......
  • Codeforces Round 934 (Div. 1)
    Preface真是一场酣畅淋漓的掉分啊,一场回到解放前了属于是这把虽然有不可抗力的原因(电脑半路蓝屏了),但不知道为什么状态就特别差A刚开始没清空干净WA了2发后就心态崩了,然后加上头疼难耐B题也没看出关键trick直接写了个不仅错还巨难写的东西不过yysy这场Guess的成分是否有点太高......
  • 每日一题 第七期 Codeforces Round 929 (Div. 3) Editorial
    TurtleTenacity:ContinualModsD.TurtleTenacity:ContinualModstimelimitpertest:2secondsmemorylimitpertest:256megabytesinput:standardinputoutput:standardoutputGivenanarraya......