题解 | 迷途之家的大贤者

迷途之家的大贤者

https://www.nowcoder.com/practice/019336efe38b4ba982e6eea8b42d2d42

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    string s;
    cin >> s;
    cout << max(s[0], s[n - 1]) << '\n';
    return 0;
}

站在先手的角度,假设先手删除后剩余的字符串为s1,且s1中的最小字符等于c1

后手一定能找到一个删除方案使剩余字符串字典序最小,具体来说:

如果s1[0] == c1,后手选择删除其余字符,只保留s1[0]

另外情况,后手选择删除前缀,使得剩下的字符串以c1开头且字典序最小

回到先手,先手对上述的应对策略是删除一个字串,这个字串包含所有的c1,假设可以在不删完的情况下达成,即新s1中不包含上述的c1,那么此时产生的s1中会存在一个新的最小字符用来满足后手,因此先手的思考过程是递归地在串中清除最小字符,再加之原串s的第一个字符和最后一个字符至少会保留其一,那么先手的最优策略就是只剩下最大的那个端点

#tracker#
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务