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个字符长度的公司名.两人轮流取名,每次选择 ...
随机推荐
- NYOJ 53 最少步数
题 目 http://acm.nyist.edu.cn/JudgeOnline/problem.php?pid=58 思路借鉴 DFS-Deep First Search-深度优先 ...
- div 环形排列
javascript-按圆形排列DIV元素(一)---- 分析 效果图: 一.分析图: 绿色边框内:外层的DIV元素,相对定位; 白色圆形框:辅助分析的想象形状; 白点:为白色圆形的圆心点,中心点,点 ...
- java高并发系列 - 第22天:java中底层工具类Unsafe,高手必须要了解
这是java高并发系列第22篇文章,文章基于jdk1.8环境. 本文主要内容 基本介绍. 通过反射获取Unsafe实例 Unsafe中的CAS操作 Unsafe中原子操作相关方法介绍 Unsafe中线 ...
- 记录一下我做Udacity 的Data Scientist Nano Degree Project
做项目的时候看了别人的blog,决定自己也随手记录下在做项目中遇到的好的小知识点. 最近在做Udacity的Data Scientist Nano Degree Project的Customer_Se ...
- 12、面向对象的思想(OOP)
面向对象与面向过程 1.都是解决问题的思维方式,都是代码的组织的方式: 2.解决简单的问题可以使用面向过程: 3.解决复杂的问题建议使用面向对象,微观处理依旧会使用面向过程. 对象的进化史(数据管理的 ...
- FutrueTask原理及源码分析
1.前言 相信很多人了解到FutureTask是因为ThreadPoolExecutor.submit方法,根据ThreadPoolExecutor.submit的使用,我们可以先猜一下FutureT ...
- Python基础总结之初步认识---class类的继承(终)。第十六天开始(新手可相互督促)
最近生病了,python更新要结束了,但是这才是真正的开始.因为后面要更新的是UnitTest单元测试框架,以及后续的Requests库.在后续的笔记会补充一些python的其他细节笔记.我想是这样的 ...
- word2vec原理分析
本文摘录整编了一些理论介绍,推导了word2vec中的数学原理,理论部分大量参考<word2vec中的数学原理详解>. 背景 语言模型 在统计自然语言处理中,语言模型指的是计算一个句子的概 ...
- mybatis批量更新策略
我们知道循环中操作db会导致连接数满,严重影响数据库性能.所以在对db进行DQL与DML时,根据业务逻辑尽量批量操作,这里我们介绍下使用mybatis批量更新mysql的两种方式. 方式一: < ...
- 使用sc 命令写脚本 添加和删除服务 简单应用
添加服务 @echo.服务启动...... @echo off @sc create 服务名 binPath= "%~dp0\服务路径" @sc config 服务名 start= ...