Codeforces Round #414 C. Naming Company
http://codeforces.com/contest/794/problem/C
题意:
有两个人要为公司起名字,每个人手中都有n个字符,现在要取一个n个字符长度的公司名。两人轮流取名,每次选择一个字符,可以任意选择放在1~n还未放置字符的位置上,每个字符限用一次。
现在第一个人希望公司名字典序越小越好,而第二个人希望字典序越大越好。输出最后的公司名。
思路:
首先肯定是要排序的,第一个人肯定去用前面最小的几个,而第二个人肯定去用前面最大的几个。
轮到第一个人时,我们首先将他手中最小的字符和第二个人手中最大的字符相比,如果此时最小字符大于等于了第二个人的最大字符,那么此时就把最大的字符放置最末尾。否则的话就把最小的放到首位。
轮到第二个人时同理分析。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
typedef long long LL; const int maxn=*1e5+; char s1[maxn],s2[maxn];
char ans[maxn]; bool cmp1(char a,char b)
{
return a<b;
} bool cmp2(char a,char b)
{
return a>b;
} int main()
{
//freopen("D:\\input.txt","r",stdin);
while(cin>>s1>>s2)
{
int len=strlen(s1);
sort(s1,s1+len,cmp1);
sort(s2,s2+len,cmp2);
int p_left=;
int p_right=len/+(len&)-;
int q_left=;
int q_right=len/-;
int l=,r=len-;
int flag=;
for(int i=;i<len;i++)
{
if(flag)
{
if(s1[p_left]>=s2[q_left]) ans[r--]=s1[p_right--];
else ans[l++]=s1[p_left++];
flag=;
}
else
{
if(s2[q_left]<=s1[p_left]) ans[r--]=s2[q_right--];
else ans[l++]=s2[q_left++];
flag=;
}
}
for(int i=;i<len;i++)
printf("%c",ans[i]);
}
return ;
}
Codeforces Round #414 C. Naming Company的更多相关文章
- Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) 【ABC】
老年人题解,语言python3 A - Bank Robbery 题意:给你ABC,以及n个数,问你在(B,C)之间的数有多少个. 题解:对于每个数判断一下就好了嘛 x,y,z = map(int,i ...
- Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) 继续跪一把
这次的前三题挺简单的,可是我做的不快也不对. A. Bank Robbery time limit per test 2 seconds memory limit per test 256 megab ...
- 【贪心】【multiset】Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) C. Naming Company
考虑两个人,先把各自的集合排个序,丢掉一半,因为比较劣的那一半一定用不到. 然后贪心地放,只有两种决策,要么把一个最优的放在开头,要么把一个最劣的放在结尾. 如果我的最优的比对方所有的都劣(或等于), ...
- Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2)
A: 思路:就是找b,c之前有多个s[i] 代码: #include<stdio.h>#define ll long longusing namespace std;ll a,b,c;in ...
- Codeforces Round #414 A. Bank Robbery
A. Bank Robbery time limit per test 2 seconds memory limit per test 256 megabytes A robber has a ...
- 【构造】Tinkoff Challenge - Final Round (Codeforces Round #414, rated, Div. 1 + Div. 2) D. Labelling Cities
考试的时候想的是,将所有的完全子图缩起来,然后如果剩下的是一条链,依次对其进行标号即可. 看了官方题解,发现完全子图这个条件太强了,缩点的条件仅仅需要保证原本两个点的“邻接表”相同即可.(注意这里的“ ...
- Codeforces Round #414
A =w= B qvq C(贪心) 题意: Alice和Bob分别有长度为n(n<=1e5)的字符串,Alice先手,每次从自己的字符串中抽出一个字母放到新字符串的某个位置,一共轮流n次,也就是 ...
- codeforces round #414 div1+div2
A:判断一下就可以了 #include<bits/stdc++.h> using namespace std; typedef long long ll; int a, b, c, n; ...
- [刷题]Codeforces 794C - Naming Company
http://codeforces.com/contest/794/problem/C Description Oleg the client and Igor the analyst are goo ...
随机推荐
- Django 框架之 Models
1. 数据库配置 Django默认支持sqlite, mysql, oracle, postgresql 数据库: Django默认使用sqlite数据库,引擎名称:django.db.backend ...
- Solr 整合
1. Solr 与 Lucene 的区别 Lucene是一个开发源代码的全文检索引擎工具包,它不是一个完整的全文检索引擎,Lucene 提供了完整的查询引擎 和索引引擎,目的是为软件开发人员提供一个简 ...
- MYSQL--表分区、查看分区(转)
一. mysql分区简介 数据库分区 数据库分区是一种物理数据库设计技术.虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间, ...
- 解决hung_task_timeout_secs问题【方法待校验】
问题描述: kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this messag ...
- 【我的Android进阶之旅】解决Center OS 64位系统编译Android APP报错error=2和finished with non-zero exit value 127
一.错误描述 1.问题 java.io.IOException: error=2, 没有那个文件或目录 今天在刚重新搭建好的64位的Center OS上安装好了Android SDK,Jenkins, ...
- SpringBoot-模板渲染
模板 开发Web站点的本质,其实就是根据浏览器发起的请求(输入),生成HTML代码返回给浏览器(输出).在之前的学习中,我们已经通过文件的形式存储起来而不是直接在Java代码中生成HTML代码.另一方 ...
- PHP程序执行时间过长,超时了怎么办
解决办法:修改php.ini文件,把最大的执行时间改为0,0表示不限制时间. max_execution_time = 0
- MapReduce Unit Test
以前用java写MR程序总不习惯写单元测试,就是查错也只是在小规模数据上跑一下程序.昨天工作时,遇到一个bug,查了好久也查出来.估计是业务逻辑上的错误.后来没办法,只好写了个单元测试,一步步跟踪,瞬 ...
- 修改WordPress标签云字体大小颜色及标签显示数量
WordPress 自带的标签云是一个很实用的小工具.站长可以通过标签对具有相同关健词的文章进行检索分类,利于访客查找相关文章.WordPress 默认标签云的字体最小为8pt,最大为22pt,标签显 ...
- XDU 1011
解法1:TLE #include<stdio.h> int main() { long long n; //freopen("in.txt","r" ...