【贪心+博弈】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 ...
随机推荐
- 虚方法(virtual)
虚方法(virtual) Virtual 关键字用于修饰方法.属性.索引器或事件声明,并且允许在派生类中重写这些对象. 看一段代码: using System ; class A { public v ...
- Masonry自动布局与UIScrolView适配
Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X.可以通过cocoa ...
- MATLAB学习总结(1)
MATLAB学习总结(1) path help path cd(current directory) savepath pathtool
- How exception works ?
这是2013年写的一篇旧文,放在gegahost.net上面 http://raison.gegahost.net/?p=28 February 18, 2013 How exception work ...
- 项目中非常有用并且常见的ES6语法
今天闲着无事,梳理下ES6常见的语法知识点:除此之外的知识点自行细化和梳理! <!DOCTYPE html> <html> <head> <meta char ...
- sublime text3前端开发插件配置以及使用(个人喜爱)
第一步下载软件接着Ctrl +~ (回车)把下面安装包管理添加到sublimeimport urllib.request,os; pf = 'Package Control.sublime-packa ...
- UVA 11419 SAM I AM (最小点覆盖,匈牙利算法)
题意:给一个r*c的矩阵,某些格子中可能有一些怪物,可以在一行或一列防止一枚大炮,大炮会扫光整行/列的怪,问最少需要多少炮?输出炮的位置. 思路: 先每行和列都放一个炮,把炮当成点,把怪当成边,一边连 ...
- docker 搭建 Java Web 运行环境
安装环境:jdk,tomcat,mysql,nginx
- vscode setting.json
setting.json { "sync.gist": "#github的码##", "sync.lastUpload": "20 ...
- 【2018 CCPC网络赛】1003 - 费马小定理
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6440 这题主要是理解题意: 题意:定义一个加法和乘法,使得 (m+n)p = mp+np; 其中给定 ...