#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的第一个字符和最后一个字符至少会保留其一,那么先手的最优策略就是只剩下最大的那个端点

京公网安备 11010502036488号