UVA 1610 Party Games
2015-10-07 15:15
393 查看
题意:给出偶数个字符串 找到一个长度最短且字典序最小的字符串 使得有一半的串小于等于它 其他的大于它
不难发现所求的字符串 只与最中间的两个串有关 设为a,b(a<b) 那么所求的串c 要满足c>=a并且c<b
而且我们要优先满足c最短 所以可以从左到右按位操作
对于第i位
当a[i]==b[i]时 c[i]只能等于a[i]
当a[i]<b[i]时 就可以取c[i]=a[i]+1 然后终止循环 从而使得c最短
但这样会有一些问题
(还是在a[i]<b[i]的情况下)
首先 如果当前是a的最后一个数了 c[i]=a[i]即可 不必再加1 就可以满足c>=a
其次 如果当前是b的最后一个数了 且b[i]=a[i]+1 的话 就不满足c<b了 这时就需要c[i]=a[i](这样c就一定满足小于b了)
然后接着沿着a[i]往下跑 直到a[i]跑完 或者 a[i]!='z' c[i]=a[i]+1然后中断即可
不难发现所求的字符串 只与最中间的两个串有关 设为a,b(a<b) 那么所求的串c 要满足c>=a并且c<b
而且我们要优先满足c最短 所以可以从左到右按位操作
对于第i位
当a[i]==b[i]时 c[i]只能等于a[i]
当a[i]<b[i]时 就可以取c[i]=a[i]+1 然后终止循环 从而使得c最短
但这样会有一些问题
(还是在a[i]<b[i]的情况下)
首先 如果当前是a的最后一个数了 c[i]=a[i]即可 不必再加1 就可以满足c>=a
其次 如果当前是b的最后一个数了 且b[i]=a[i]+1 的话 就不满足c<b了 这时就需要c[i]=a[i](这样c就一定满足小于b了)
然后接着沿着a[i]往下跑 直到a[i]跑完 或者 a[i]!='z' c[i]=a[i]+1然后中断即可
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cctype> #include<cmath> #include<vector> #include<queue> #include<map> #include<hash_map> #include<algorithm> #include<set> #define scnaf scanf #define cahr char #define bug puts("bugbugbug"); using namespace std; typedef long long ll; const int mod=1000000007; const int maxn=4005; const int inf=1e9; string cha[1005]; int main() { int n; while(~scanf("%d",&n)&&n){ getchar(); for(int i=0;i<n;i++) getline(cin,cha[i]); sort(cha,cha+n); string a=cha[n/2-1]; string b=cha[n/2]; for(int i=0;i<a.size();i++) { char big=a[i]+1; if(a[i]==b[i]||i==a.size()-1) putchar(a[i]); else{ if(big != b[i]) putchar(big); else{ if(i+1 < b.size()) putchar(big); else{ putchar(a[i]); for(i++;i<a.size();i++){ if(a[i]!='Z'&&i!=a.size()-1){ putchar(a[i]+1); break; } putchar(a[i]); } } } break; } } puts(""); } }
相关文章推荐
- Transformation 能将 Windows XP/Server 2003 操作系统,完美地模拟成 Windows Vista 的软件
- 用javascript和css模拟select的脚本
- PHP模拟asp.net的StringBuilder类实现方法
- javascript用层模拟可移动的小窗口
- 自编jQuery插件实现模拟alert和confirm
- PHP模拟asp中response类实现方法
- javascript 模拟点击广告
- JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
- php实现模拟post请求用法实例
- JavaScript实现MIPS乘法模拟的方法
- 模拟xcopy的函数
- JS模拟实现Select效果代码
- php模拟服务器实现autoindex效果的方法
- C# SendInput 模拟鼠标操作的实现方法
- PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
- JS模拟并美化的表单控件完整实例
- php模拟登陆的实现方法分析
- php模拟用户自动在qq空间发表文章的方法
- php 模拟 asp.net webFrom 按钮提交事件实例
- php模拟post提交数据的方法