【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

字符串排序后
显然是n/2-1和n/2这两个字符串进行比较。
设为a,b
找到第一个不相同的位置。
即0..i-1是相同的前缀,然后第i位不一样了。
则如果i是a的最后一位了。
那么直接输出a就好。
这样满足大于等于a且小于b

否则

如果b[i]-a[i]>1 则可以直接把这一位a[i]加1以及前面的前缀然后输出

或者i不是b的最后一位那么也可以这样直接加1输出。

这样输出的s就是b的一个前缀了。肯定小于b,又大于a.

如果b[i]-a[i]==1且i是b的最后一位。

那么就不能直接输出+1后的结果了。

那样的话输出的s就和b一样了。

那么我们保留a[i]然后在后面的某一个位置找个机会(某个字符)+1;

或者直接就是整个字符串b了

【代码】

/*
1.Shoud it use long long ?
2.Have you ever test several sample(at least therr) yourself?
3.Can you promise that the solution is right? At least,the main ideal
4.use the puts("") or putchar() or printf and such things?
5.init the used array or any value?
6.use error MAX_VALUE?
7.use scanf instead of cin/cout?
8.whatch out the detail input require
*/
/*
一定在这里写完思路再敲代码!!!
*/
#include <bits/stdc++.h>
using namespace std; int n;
vector <string> v; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
while (cin >> n && n){
v.clear();
for (int i = 1;i <= n;i++){
string x;
cin >> x;
v.push_back(x);
}
sort(v.begin(),v.end());
int mid = n/2;
string s1 = v[mid-1],s2 = v[mid];
string temp = "";
for (int i = 0;i < (int)s1.size() && i<(int)s2.size();i++)
if (s1[i]==s2[i]){
temp+=s1[i];
}else{
if (i==(int)s1.size()-1){
temp+=s1[i];
}else if (s2[i]-s1[i]>1 || i!=(int)s2.size()-1){
temp+=(s1[i]+1);
}else{
temp+=s1[i];
for(int j = i+1;j < (int)s1.size();j++){
if (j==(int)s1.size()-1){
temp+=s1[j];break;
}
if (s1[j]!='Z'){
temp+=(s1[j]+1);break;
}
temp+='Z';
}
}
break;
}
cout << temp << endl;
}
return 0;
}

最新文章

  1. python函数 与 函数式编程
  2. CSDN数据库被爆 统计CSDN用户都喜欢哪些密码
  3. android之广播(二)
  4. &lt;大学祭&gt;
  5. f2fs解析(四)f2fs的extent特性
  6. Linux进程间通信-匿名管道
  7. CSDN 自动评论
  8. Oracle select 中case 的使用以及使用decode替换case
  9. 终于懂了:WM_PAINT 与 WM_ERASEBKGND(三种情况:用户操作,UpdateWindow,InvalidateRect产生的效果并不相同),并且用Delphi代码验证 good
  10. 动态传递参数到DevExpress.XtraReports的小结
  11. js求两个数的最大公约数
  12. virtuoso数据库的安装方法
  13. 使用C#的AssemblyResolve事件动态解析加载失败的程序集
  14. python 网路爬虫(二) 爬取淘宝里的手机报价并以价格排序
  15. 深海中的STL—mt19937
  16. 一、Java JUC简介
  17. 【转】Visual Studio——多字节编码与Unicode码
  18. HDU 1075 What Are You Talking About (strings)
  19. struts神马的不过是对servlet、filter的封装而已,hibernate神马的也不过是对jdbc的封装而已,他们只是把一些常见的操作流程化了,如果不懂servlet、filter,不懂jdbc,使用struts和hibernate出问题了都不知道是怎么回事。
  20. php在线支付流程

热门文章

  1. JS获取当前时间(YYYY-MM-DD ),element显示默认当前时间,显示默认昨天,显示默认上个月
  2. 紫书 例题 10-8 UVa 1262 (暴力枚举)
  3. 一个最不可思议的MySQL死锁分析
  4. 网易2016研发project师笔试题
  5. Asp.Net碎知识
  6. javascript“类”与继承总结
  7. React开发实时聊天招聘工具 -第一章
  8. mysql 中sql 语句查询今天、昨天、近7天、近30天、一个月内、上一月数据
  9. Chrome OS 70 发布:这是安卓的私生子吗?
  10. OpenJDK源码研究笔记(十一):浅析Javac编译过程中的抽象语法树(IfElse,While,Switch等语句的抽象和封装)