#414 Div2 C
#414 Div2 C
题意
两个人每个人都有一串字母序列,他们要替换一个长度为 n 包含问号的新序列,他们每次可以使用自己序列中的字母代替新序列的问号(使用自己序列中的字母后那个字母就会消失),第一个人想要形成的序列字典序尽可能小,第二个人则希望尽可能大,两人操作不失误,第一个人先操作,问形成的新序列。
分析
首先排序,如果 n 为偶数,显然第一个人用到的字母是自己序列的前一半,而后一个人则是自己序列的后一半,一开始两人都尽可能的想要把字典序小的字母或字典序大的字母向前放,直到第一个人所操作到的字母字典序大于等于第二个人操作到的字母的字典序,那么第一个人一定想把大的放到后面,第二个人想把小的放到后面,按这样的规则倒序插入剩下的数字即可。
code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 3e5 + 10;
string s1, s2;
char ans[MAXN];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s1 >> s2;
sort(s1.begin(), s1.end());
sort(s2.begin(), s2.end());
int L = s1.length();
int mxl = (L + 1) / 2;
int l = 0, r = L - 1, c = 0, cnt = 0;
int ff = 0;
while(s1[l] < s2[r]) {
ans[c++] = s1[l++];
cnt++;
if(cnt == L) break;
if(s2[r] <= s1[l]) {
ff = 1;
break;
} else {
ans[c++] = s2[r--];
cnt++;
}
if(cnt == L) break;
}
int rr = mxl; // 第二个序列需要填入的序列段的最左端
mxl--; // 第一个序列需要填入的序列段的最右端
for(int i = L - 1; i >= 0; i--) {
if(ans[i] == 0) {
if(!ff) {
ans[i] = s1[mxl--];
cnt++;
ff = 1;
} else {
ans[i] = s2[rr++];
ff = 0;
cnt++;
}
}
if(cnt == L) break;
}
ans[L] = 0;
cout << ans << endl;
return 0;
}
#414 Div2 C的更多相关文章
- codeforces round #414 div1+div2
A:判断一下就可以了 #include<bits/stdc++.h> using namespace std; typedef long long ll; int a, b, c, n; ...
- bc#54 div2
用小号做的div2 A:竟然看错了排序顺序...白白WA了两发 注意读入一整行(包括空格):getline(cin,st) [gets也是资瓷的 #include<iostream> us ...
- $('div a') 与$('div>a'),.div+.div2与.div~.div2
$('div a'):div标签下所有层次a元素的jquery对象 $('div>a'):div标签下子元素层次a元素的jquery对象 <body> <div class=' ...
- SRM 657 DIV2
-------一直想打SRM,但是感觉Topcoder用起来太麻烦了.题目还是英文,不过没什么事干还是来打一打好了.但是刚注册的号只能打DIV2,反正我这么弱也只适合DIV2了.. T1: 题目大意: ...
- CodeForces Round 192 Div2
This is the first time I took part in Codeforces Competition.The only felt is that my IQ was contemp ...
- nginx 414 Request-URI Too Large
症状 nginx 414 Request-URI Too Large #客户端请求头缓冲区大小,如果请求头总长度大于小于128k,则使用此缓冲区, #请求头总长度大于128k时使用large_clie ...
- Codeforce Round #211 Div2
真的是b到不行啊! 尼玛C题一个这么简单的题目没出 aabbccddee 正确的是aabccdee 我的是 aabcdee 硬是TM的不够用,想半天还以为自己的是对的... A:题... B:题. ...
- Topcoder srm 632 div2
脑洞太大,简单东西就是想复杂,活该一直DIV2; A:水,基本判断A[I]<=A[I-1],ANS++; B:不知道别人怎么做的,我的是100*N*N;没办法想的太多了,忘记是连续的数列 我们枚 ...
- TopCoder 603 div1 & div2
div2 250pts MiddleCode 题意:s串长度为奇数时,将中间字符取掉并添加到t末尾:长度为偶数时,将中间两个较小的字符取掉并添加到末尾. 分析:直接做,学习了一下substr(s, p ...
随机推荐
- vue2.0版cnode社区项目搭建及实战开发
_________________________________________________________________________ 初涉vue就深深的被vue强大的功能,快速的开发能力 ...
- 【STL】reverse函数用法
reverse函数的功能是反转排序一个容器中指定元素的内容. 函数参数:reverse(first,last), 其中first,last分别指向被反转序列中初始及末尾位置的双向迭代器(Bidirec ...
- POJ 1743 不可重叠的最长重复子串
原问题,其实是找最长的相似子串,所谓相似就是一个子串每个值加上一个偏移值可以得到另一个子串. 我们先求原数组的差值数组,对新数组求后缀数组,二分答案,判定是否有某个Height数组中的sa最小值与最大 ...
- CSS背景图片常见属性设置
在CSS中,图片属性的设置是必不可少的,下面介绍一下常见的图片属性: 1)背景图片插入:background-image:url(位置及名称); //默认在父级元素内的左上角 2)背景平铺方式:ba ...
- .NET枚举类型转为List类型
如图所示这个竞卖状态,原先是在前端界面通过html代码写死的几个状态,现在需要改为动态加载.这个几个状态是定义的枚举类型. 1:定义一个枚举类型 /// <summary> /// ...
- Mysql,zip格式安装、修改密码、建库
Mysql,zip格式 1. Mysql 主目录最好别带有"- ."之类的字符 2. Mysql 配置环境变量 Path 环境变量后加上 mysql解压路径:eg:E:\mysql ...
- Codeforces Round #410 (Div. 2)D题
D. Mike and distribution time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
- String类理解
1.首先应该知道的是:String是一个类,不属于基本类型,而是引用类型. 2.创建String对象的三种方式的比较: 第一种是先去String pool检查是否存在"abc"常量 ...
- 史上最全的njRAT通信协议分析
Njrat,又称Bladabindi,该木马家族使用.NET框架编写,是一个典型的RAT类程序,通过控制端可以操作受控端的文件.进程.服务.注册表内容,也可以盗取受控端的浏览器的保存的密码信息等内容. ...
- 微信公众号开发《三》微信JS-SDK之地理位置的获取,集成百度地图实现在线地图搜索
本次讲解微信开发第三篇:获取用户地址位置信息,是非常常用的功能,特别是服务行业公众号,尤为需要该功能,本次讲解的就是如何调用微信JS-SDK接口,获取用户位置信息,并结合百度地铁,实现在线地图搜索,与 ...