zoukankan      html  css  js  c++  java
  • 博弈的dfs

    题目:

    链接:https://ac.nowcoder.com/acm/contest/283/D
    来源:牛客网

    小西买了一堆肥宅快乐水和肥宅快乐茶,准备和室友比谁更肥宅。
    快乐水有A瓶,快乐茶B瓶。
    小西和室友的规则是这样的:
    1. 小西先手,轮流到每个人的回合,每个回合只能喝剩余数量较多的饮料
    2. 满足规则1的同时,每次只能喝另一种饮料剩余数量的正整数倍
    3. 满足1、2的同时,不能超额喝饮料,也就是说剩下2瓶的时候不能喝大于2瓶的数量。
    4. 每个人在自己的回合如果能喝完剩下的其中一种饮料,那么就获得胜利。
    例如A=10,B=2。
    小西只能喝快乐水,且只能喝2/4/6/8/10瓶快乐水。小西可以喝10瓶快乐水直接获得胜利。

    小西和室友都是肥宅,所以他们都会才采取为了胜利最优的行动。
    现在请你判断小西是否能赢得胜利。
    代码:
    #include<stdio.h>
    #include<iostream>
    #include<algorithm>
    #include<map>
    #include<math.h>
    typedef long long LL;
    using namespace std;
    int dfs(LL n,LL m,int a)
    {
        if(n<m)
        {
            LL temp;
            temp=n,n=m,m=temp;
        }
        if(n%m==0)
        {
            return a;
        }
        if(n/m>=2)
            return a;
        else
        {
            return dfs(n-(n/m)*m,m,-a);
        }
    }
    int main()
    {
        LL n,m;
        int t;
        cin>>t;
        while(t--)
        {
             cin>>n>>m;
        int l=dfs(n,m,1);
        if(l==1)
            printf("wula
    ");
        else
            printf("mmp
    ");
        }
    
    }
    View Code
  • 相关阅读:
    第四次作业
    第三次作业
    java第三次作业
    java第二次作业
    java作业
    第一次作业
    第十一次作业
    第十次作业
    第九次作业
    第八次作业
  • 原文地址:https://www.cnblogs.com/linhaitai/p/10020682.html
Copyright © 2011-2022 走看看