codeforces 794 C. Naming Company(贪心)
题目链接:http://codeforces.com/contest/794/problem/C
题意:有两个人每个人都有一个长度为n的字符串,两人轮流拿出一个字符串,放在一个长度为n的字符串的指定位置中,第一个
人他想让最后组成的字符串尽可能小,另一个人想要字符串尽可能的大。他们互相知道各自手中有什么字符串,最后输出组成的
字符串
#include <iostream>
#include <cstring>
#include <string>
#include <algorithm>
#include <deque>
using namespace std;
const int M = 3e5 + 10;
char s1[M] , s2[M] , s[M];
deque<char>Ol , Ig;
bool cmp(char x , char y) {return x > y;}
int main() {
cin >> s1 >> s2;
int n = strlen(s1);
sort(s1 , s1 + n) , sort(s2 , s2 + n , cmp);
if(n % 2 == 0) {
for(int i = 0 ; i < n / 2 ; i++) {
Ol.push_back(s1[i]);
}
for(int i = 0 ; i < n / 2 ; i++) {
Ig.push_back(s2[i]);
}
}
else {
for(int i = 0 ; i <= n / 2 ; i++) {
Ol.push_back(s1[i]);
}
for(int i = 0 ; i < n / 2 ; i++) {
Ig.push_back(s2[i]);
}
}
int sta = 0 , end = n - 1;
while(!Ol.empty()) {
if(Ig.empty()) {
s[sta++] = Ol.front();
break;
}
char cp1 = Ol.front() , cp2 = Ig.front();
int flag = 0;
if(cp1 < cp2) {
s[sta++] = cp1;
flag = 1;
}
else {
s[end--] = Ol.back();
flag = 2;
}
if(flag == 1) {
Ol.pop_front();
}
else {
Ol.pop_back();
}
if(Ol.empty()) {
s[sta++] = cp2;
break;
}
else {
flag = 0;
char cp3 = Ol.front();
if(cp2 > cp3) {
s[sta++] = cp2;
flag = 1;
}
else {
s[end--] = Ig.back();
flag = 2;
}
if(flag == 1) {
Ig.pop_front();
}
else {
Ig.pop_back();
}
}
}
cout << s << endl;
return 0;
}
codeforces 794 C. Naming Company(贪心)的更多相关文章
- 【codeforces 794C】Naming Company
[题目链接]:http://codeforces.com/contest/794/problem/C [题意] 有n个位置; 两个人; 每个人都有n个字符组成的集合s1,s2(可以有重复元素); 然后 ...
- [刷题]Codeforces 794C - Naming Company
http://codeforces.com/contest/794/problem/C Description Oleg the client and Igor the analyst are goo ...
- CodeForces 794 G.Replace All
CodeForces 794 G.Replace All 解题思路 首先如果字符串 \(A, B\) 没有匹配,那么二元组 \((S, T)\) 合法的一个必要条件是存在正整数对 \((x,y)\), ...
- codeforces Gym 100338E Numbers (贪心,实现)
题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...
- [Codeforces 1214A]Optimal Currency Exchange(贪心)
[Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...
- CodeForces - 794C:Naming Company(博弈&简单贪心)
Oleg the client and Igor the analyst are good friends. However, sometimes they argue over little thi ...
- 【贪心】【multiset】Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) C. Naming Company
考虑两个人,先把各自的集合排个序,丢掉一半,因为比较劣的那一半一定用不到. 然后贪心地放,只有两种决策,要么把一个最优的放在开头,要么把一个最劣的放在结尾. 如果我的最优的比对方所有的都劣(或等于), ...
- 【贪心+博弈】C. Naming Company
http://codeforces.com/contest/794/problem/C 题意:A,B两人各有长度为n的字符串,轮流向空字符串C中放字母,A尽可能让字符串字典序小,B尽可能让字符串字典序 ...
- Codeforces Round #414 C. Naming Company
http://codeforces.com/contest/794/problem/C 题意: 有两个人要为公司起名字,每个人手中都有n个字符,现在要取一个n个字符长度的公司名.两人轮流取名,每次选择 ...
随机推荐
- Js面向对象原型~构造函数
脑袋一团浆糊,但希望写点啥,所有就有了这篇博文了,抱歉哦....开始吧!!!! 什么是构造函数?? 所谓"构造函数",其实就是一个普通函数,但是内部使用了this变量.对构造 ...
- ZK安装、ZK配置、ZK集群部署
今天心血来潮,想搞一下zookeeper集群.具体步骤记录下吧~嘻嘻
- Python之assert断言语句
关键字assert构成断言语句,主要是可以在我们书写一个新的程序时,可以使用它帮我们锁定bug范围. 表达式: assert 表达式 ‘窗口提示的信息’ 括号中的项目为选填项目,选填项目将会在表达式的 ...
- 解决:Navicat连接不上MySQL 8.0
转载自 https://www.cnblogs.com/shiysin/p/shiysin.html Navicat连接不上,总是报错1251: 原因是MySQL8.0版本的加密方式和MySQL5.0 ...
- 如何实现css渐变圆角边框
最近设计师的风格发生突变,一句话概括就是,能用渐变的地方绝对不用纯色.这不,就整出了一个渐变圆角边框.这渐变好做,圆角好做,渐变圆角也没问题,可是在加个边框还是有点坑的.没办法,看看怎么实现吧 bor ...
- 洛谷 P4127 [AHOI2009]同类分布
题意简述 求l~r之间各位数字之和能整除原数的数的个数. 题解思路 数位DP 代码 #include <cstdio> #include <cstring> typedef l ...
- Map集合的遍历.
package collction.map; import java.util.HashMap; import java.util.Iterator; import java.util.Map; im ...
- 前端小知识-js
一.对象冒充 function student(name,age){ this.name = name; this.age = age; this.show = function(){ console ...
- Rikka with Game[技巧]----2019 杭电多校第九场:1005
Rikka with Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Othe ...
- LoRaWAN调试踩坑心得(一)
先说两句 在调试和移植的过程中 我们经常想用节点去抓上行包 或者去抓下行包 但在抓取的过程中发现,上行包抓取不到到,或是下行包抓取不到,或者是两个都抓取不到,觉得非常的诡异.明明接收频点.BW和SF都 ...