zoukankan      html  css  js  c++  java
  • hdu 6684 Rikka with Game(2019 Multi-University Training Contest 9 1005)(博弈)

    先贴个代码,打完比赛回来再补cf又炸了,我回来了。

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6684

    题目大意:两个人进行一个字符串游戏,给定一个字符串,两个人轮流进行操作,操作有两种:一,选择字符串上的某个字母,使之变成字典序上的下一个字母(如果是z就变成a);二,结束游戏。

    第一个人的目标是结束游戏时字符串的字典序尽可能小(a在前为小),第二个人的目标是结束时字符串字典序尽可能大。

    假设两人每次都是最佳操作,问输出字符串是什么。

    这是个很简单的博弈(但我还是没写出来),为了写出这道题我们要明确三点:一,我们只关心首字母,因为首字母对字典序的影响是绝对的;二,当首字母不是z时,第一个人应当直接结束游戏,因为他不可能得到字典序更小的字符串;三,字母y是个例外,因为双方都不敢对y进行操作(第一个人操作y,第二个人结束游戏,则首字母变为z,第一个人显然失败,反之同理)。

    由此得到很简单的变换规律:从头开始,判断第一个非y的字母是否为z,是的话就将之变为b,否则不变,然后输出。

    #include<iostream>
    #include<cstdio>
    #include<set>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<vector>
    #include<stdlib.h>
    #include<queue>
    #include<algorithm>
    #include<map>
    #include<stack>
    using namespace std;
    char c[105];
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%s",c);
            int lc=strlen(c);
            for(int i=0;i<lc;i++)
            {
                if(c[i]=='y')
                {
                    continue;
                }
                else if(c[i]=='z')
                {
                    c[i]='b';
                }
                break;
            }
            printf("%s
    ",c);
        }
        return 0;
    }
  • 相关阅读:
    android界面基本属性
    iOS请求webservice
    图片在鼠标经过时变大
    控制字体大小,em与px的区别与应用
    IE的另类CSS hack,条件注释
    几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
    CSS实现文字压在边线上的效果,fieldset与legend
    每个.NET 开发人员应该下载的十个必备工具
    css做出丰富的Tooltips
    .NET牛人应该知道些什么?
  • 原文地址:https://www.cnblogs.com/forever3329/p/11382343.html
Copyright © 2011-2022 走看看