题意:
输入一个n个字符串的集合D,找一个长度最短的字符串(不一定在D中出现)S, 使得D中恰好一半串小于等于S,另一半串大于S,如果有多解,输出字典序最小的解。
分析:
vector 存,排序,取中间的两个,然后把第一个逐渐变大,例如 ABC -> AC -> B 这样,一次次检验和第二个的关系,一旦大于了就停止循环,要注意的是 如果是 AZC 按照算法会变成 A(Z+1) Z + 1 在ASCII码中并不是字母,因此单独考虑这种情况。
代码:
#include<bits/stdc++.h>
#define LL long long
#define ms(s) memset(s, 0, sizeof(s))
using namespace std;
int main() {
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
ios::sync_with_stdio(