zoukankan      html  css  js  c++  java
  • Codeforces Round #109 (Div. 1) D Flatland Fencing

    题目链接:Flatland Fencing

    题意:有两个人参加游戏,开始时在坐标轴的x1,x2处,第一个玩家每次可以走到 [x1+a, x1+b]处,第二个玩家每次可以走到 [x2-b, x2-a] 处,当某一方走到另一方当前所站的位置时为胜。问两者都采取最佳策略,则谁胜谁负或者平局。

    题解:双方的策略是对称的,所以在很多情况下第二个玩家总能够采取与第一个玩家对称的策略抵消对方的优势,已达到平局。

       如果玩家可以留在原地,则一定是平局。如果玩家双方只能朝着相反的方向走的时候也一定是平局。

       剩下的情况可以看成有 |x1-x2| 颗石子,每次至少取 min(|a|, |b|),最多取 max(|a|, |b|)颗石子,刚好取到 0 的玩家胜利:这里也需要注意平局,令最少取 a,最多取 b,总数为 n,则 n%(a+b) 在 [1, a-1]∪[b+1, a+b-1] 时一定时平局;其他时候只有当 n%(a+b) == 0 时,第二个玩家才能胜利,否则第一个玩家胜利。

    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long LL;
    
    void solve(LL n,LL a,LL b,LL x1,LL flag){
        if(((n%(a+b))<=a-1&&(n%(a+b))>=1)||(b+1<=(n%(a+b))&&(n%(a+b))<=a+b-1)) cout<<"DRAW"<<endl;
        else{
            if(n%(a+b)==0) cout<<"SECOND"<<endl;
            else if(flag==0){
                cout<<"FIRST"<<endl;
                cout<<x1-n%(a+b)<<endl;
            }
            else{
                cout<<"FIRST"<<endl;
                cout<<x1+n%(a+b)<<endl;
            }
        }
    }
    
    int main(){
        LL x1,x2,a,b;
        cin>>x1>>x2>>a>>b;
        if(a<=0&&b>=0){
            if(x1+a<=x2&&x2<=x1+b){
                cout<<"FIRST"<<endl;
                cout<<x2<<endl;
            }
            else{
                cout<<"DRAW"<<endl;
            }
        }
        else if(a<0&&b<0){
            if(x1-x2<0) cout<<"DRAW"<<endl;
            else{
                solve(abs(x1-x2),abs(b),abs(a),x1,0);
            }
        }
        else if(a>0&&b>0){
            if(x1-x2>0) cout<<"DRAW"<<endl;
            else{
                solve(abs(x1-x2),abs(a),abs(b),x1,1);
            }
        }
    
    
    
        return 0;
    }
  • 相关阅读:
    Lombok介绍、使用方法和总结
    JSONObject.fromObject
    idea多级目录不展开的问题
    SpringBoot | 查看默认版本配置
    常见的版本号及Springcloud的版本
    Spring Boot,Spring Security实现OAuth2 + JWT认证
    OAuth2实现原理
    什么是OAuth2
    springboot 实时监控 spring-boot-starter-actuator 包
    解决springboot 新版本 2.1.6 spring-boot-starter-actuator 访问报404
  • 原文地址:https://www.cnblogs.com/N-Psong/p/10273814.html
Copyright © 2011-2022 走看看