前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Codeforces】1220C - Substring Game in the Lesson

【Codeforces】1220C - Substring Game in the Lesson

作者头像
喜欢ctrl的cxk
发布2019-11-08 10:33:57
5860
发布2019-11-08 10:33:57
举报
文章被收录于专栏:Don的成长史

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_42449444/article/details/102701904

Problem Description:

Mike and Ann are sitting in the classroom. The lesson is boring, so they decided to play an interesting game. Fortunately, all they need to play this game is a string s and a number k (0≤k<|s|).

At the beginning of the game, players are given a substring of ss with left border l and right border r, both equal to k (i.e. initially l=r=k). Then players start to make moves one by one, according to the following rules:

  • A player chooses l′ and r′ so that l′≤l, r′≥r and s[l′,r′] is lexicographically less than s[l,r]. Then the player changes l and r in this way: l:=l′, r:=r′.
  • Ann moves first.
  • The player, that can't make a move loses.

Recall that a substring s[l,r] (l≤r) of a string s is a continuous segment of letters from s that starts at position l and ends at position r. For example, "ehn" is a substring (s[3,5]) of "aaaehnsvz" and "ahz" is not.

Mike and Ann were playing so enthusiastically that they did not notice the teacher approached them. Surprisingly, the teacher didn't scold them, instead of that he said, that he can figure out the winner of the game before it starts, even if he knows only s and k.

Unfortunately, Mike and Ann are not so keen in the game theory, so they ask you to write a program, that takes s and determines the winner for all possible k.

Input Specification:

The first line of the input contains a single string s (1≤|s|≤5⋅

10^{5}
10^{5}

) consisting of lowercase English letters.

Output Specification:

Print |s| lines.

In the line i write the name of the winner (print Mike or Ann) in the game with string s and k=i, if both play optimally.

Sample Input1:

代码语言:javascript
复制
abba

Sample Output1:

代码语言:javascript
复制
Mike
Ann
Ann
Mike

Sample Input2:

代码语言:javascript
复制
cba

Sample Output2:

代码语言:javascript
复制
Mike
Mike
Mike

解题思路:

水题,若遍历字符串,当前字符大于最小字符则输出Ann,否则更新最小字符并输出Mike。

AC代码:

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
#define Up(i,a,b) for(int i = a; i <= b; i++)
#define ms(a,x) memset(a,x,sizeof(a))
typedef long long ll;
const int INF = 0x3f3f3f3f;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    string str;
    getline(cin,str);
    char min = 'z';
    for(auto it : str)
    {
        if(min < it)
        {
            cout << "Ann" << endl;
        }
        else 
        {
            min = it;
            cout << "Mike" << endl;
        }
    }
    return 0;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/10/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Problem Description:
  • Input Specification:
  • Output Specification:
  • Sample Input1:
  • Sample Output1:
  • Sample Input2:
  • Sample Output2:
  • 解题思路:
  • AC代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档