【贪心+博弈】C. Naming Company
http://codeforces.com/contest/794/problem/C
题意:A,B两人各有长度为n的字符串,轮流向空字符串C中放字母,A尽可能让字符串字典序小,B尽可能让字符串字典序大,A,B都知道对方的情况;A先手。
首先,A要C的字典序大,B要C的字典序小,所以先贪心,A的按从小到大排序,B的按从大到小排序。
那么现在我们已经知道了A,B分别要选择放到C的字符。
接下来博弈:
B的最大字符等于小于A的最小字符:
- A走:A一定要B放到前面,所以A尽可能放到后面,放哪个呢?当然是大字符;
- B走:B一定要A放在前面,所以B尽可能放在后面,放哪个呢?当然是小字符;
B的最大字符大于A的最小字符:
- A走:A一定要把自己的小字符先放在前面;
- B走:B一定要把自己的大字符先放在前面;
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<set>
#include<map>
#include<utility>
using namespace std;
const int maxn=3e5+;
char a[maxn];
char b[maxn];
char c[maxn];
char aa[maxn];
char bb[maxn];
bool cmp(char x,char y)
{
return y>x;
}
int main()
{
scanf("%s",a);
scanf("%s",b,cmp);
int l=strlen(a);
sort(a,a+l);
sort(b,b+l);
memset(aa,'\0',sizeof(aa));
memset(bb,'\0',sizeof(bb));
memset(c,'\0',sizeof(c));
int la,lb;
if(l%==)
{
la=l/;
}
else
{
la=l/+;
}
lb=l/; for(int i=;i<la;i++)
{
aa[i]=a[i];
}
int cnt=;
for(int i=l-;i>=l-lb;i--)
{
bb[cnt++]=b[i];
}
int pa,qa,pb,qb,pc,qc;
pa=;
qa=la-;
pb=;
qb=lb-;
pc=;
qc=la+lb-;
cnt=;
while()
{
if(cnt==la+lb)
{
break;
}
if(cnt%==)
{
if(bb[pb]<=aa[pa])
{
c[qc--]=aa[qa--];
}
else
{
c[pc++]=aa[pa++];
}
}
else
{
if(bb[pb]<=aa[pa])
{
c[qc--]=bb[qb--];
}
else
{
c[pc++]=bb[pb++];
}
}
cnt++;
} cout<<c<<endl;
return ;
}
【贪心+博弈】C. Naming Company的更多相关文章
- [刷题]Codeforces 794C - Naming Company
http://codeforces.com/contest/794/problem/C Description Oleg the client and Igor the analyst are goo ...
- Codeforces 388C Fox and Card Game (贪心博弈)
Codeforces Round #228 (Div. 1) 题目链接:C. Fox and Card Game Fox Ciel is playing a card game with her fr ...
- CodeForces - 794C:Naming Company(博弈&简单贪心)
Oleg the client and Igor the analyst are good friends. However, sometimes they argue over little thi ...
- Naming Company CodeForces - 794C (博弈,构造)
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
考虑两个人,先把各自的集合排个序,丢掉一半,因为比较劣的那一半一定用不到. 然后贪心地放,只有两种决策,要么把一个最优的放在开头,要么把一个最劣的放在结尾. 如果我的最优的比对方所有的都劣(或等于), ...
- codeforces 794 C. Naming Company(贪心)
题目链接:http://codeforces.com/contest/794/problem/C 题意:有两个人每个人都有一个长度为n的字符串,两人轮流拿出一个字符串,放在一个长度为n的字符串的指定位 ...
- HDU-4647 Another Graph Game 贪心,博弈
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4647 注意这题两人的决策是想要使得自己的分数与对方的差值最大.. 注意到数据范围,显然是贪心之类的,如 ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- Codeforces1099F. Cookies(线段树+dp+贪心+博弈)
题目链接:传送门 思路: 分析到处理节点时的吃cookie的顺序了,然鹅不会用线段树维护前缀和.技术门槛QAQ... 很容易想到可以从root开始搜索,每次深入消耗时间2*边权w. 然后对于深入到点u ...
随机推荐
- js 判断客户端系统
function detectOS() { var sUserAgent = navigator.userAgent; var isWin = (navigator.platform == " ...
- 【ADO.NET】 基础 (SQL Server)
一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...
- AJPFX关于Set接口学习笔记及总结
Set接口中的方法和Collection中方法一致的.Set接口取出方式只有一种,迭代器. |--HashSet:底层数据结构是哈希表,线程是不同步的.无序,高效: HashSet集合保证元素唯一性: ...
- re正则表达式公式讲解1
常用的表达式一些规则 1.“.” 匹配出了\n之外的任意一个字符,包括特殊字符 有几个·就匹配几个字符. import re print(re.search("."," ...
- The lion king 经典句型摘录
What am I going to do with him? Everything the light touches is our kingdom. But I thought a king ca ...
- grep的几个参数
-a 在二进制问就爱你中,以文本方式进行搜索 -c 计算找到搜索字符串的次数 -i 忽略大小写 -n 输出行号 -v 反向选择,即没有显示搜索字符串内容的那一行 grep -n '\.$' file ...
- laravel如何查找门脸及注入类方法
门脸模式 通过 config/app.php 查看别名对应类名 Illuminate\Support\Facades\Log ,查看 LoggerInterface 类文件,得:命名空间+接口名 Ps ...
- xcopy递归拷贝
递归拷贝 ::xcopy SOURCE_DIR DES_DIR\ /s SOURCE_DIR后面不需要加反斜杠
- 50个Bootstrap扩展插件
Bootstap这个框架本身已经包含了开发网页的众多要素,包括了常用的工具以及扩展组件,如果你在开发页面时觉得在某些方面还不够的话,不妨看看最新收集的50个Bootstrap扩展插件,这些插件在我们平 ...
- Python 使用re模块实现正则表达式
# coding: utf-8 # Team : Quality Management Center # Author:Carson # Date :2019/6/21 10:41 # Tool :P ...