【题目链接】:http://codeforces.com/contest/794/problem/C

【题意】



有n个位置;

两个人;

每个人都有n个字符组成的集合s1,s2(可以有重复元素);

然后两人轮流从各自的集合中取出一个字符;

把它放在这n个位置中的任意一个位置;

其中一个人想要让这n个字符组成的字符串字典序尽量小;

另外一个人则想让他尽量大;

问你最后字符串会变成什么样

【题解】



s1和s2是两个人的集合

可以先把s1升序排;

然后s2降序排;

设ls1,ls2分别为s1和s2最左的边的未被选走的字符;

rs1,rs2则是最右的;

然后到第一个人选的时候

比较s1[ls1]和s2[ls2];

①如果s1[ls1]< s2[ls2]

则我们必须要把s1[ls1]尽可能地放在最后的字符串的最左边;

因为如果你不占据最左边那个位置的话;

s2[ls2]那个最大的就能放在最左边那个位置了;

而这无疑给了对手把字符的字典序变大的机会;



如果s1[ls1]>=s2[ls2];

这个时候;

就相当于是这样的情况

x y z

c b a

即s1里面的每一个字符的字典序都比s2里面的来得大;

则,这个时候;

我们就不能着急着把x放在开头了;

应该机灵一点;

先看看自己还能放几个字符;

然后尽量把自己的,字典序大的放在最后面;

(让那些字典序大的占的位权小一点)

然后就能逼迫对方把较小的字符放在最开头了:)

比如当前你还能放两个字符(知道还能放两个字符的作用就在于此,不然你会错误地选择最后一个字符z放在最后面,而实际上最后一个字符放y比较优)

则你先把y放在最后面,然后再考虑对方会怎么做?,对方也应该会执行这样的策略,即也看看自己还能放多少个字符x,然后把第ls2+x-1个字符放在最后面,即,尽量把字典序小的字符放在后面,让字典序小的字符的位权占的少一点,逼迫对方让对方把大字典序的字符放在前面;

所以一旦遇到②的情况,其实就能直接出结果了;

每个人都从令x=ls+自己能放的字符个数-1个字符开始,轮流把x,x-1,x-2…放在最后的答案字符的末端.



【Number Of WA】



8



【完整代码】

【codeforces 794C】Naming Company的更多相关文章

  1. 【codeforces 415D】Mashmokh and ACM(普通dp)

    [codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...

  2. 【35.02%】【codeforces 734A】Vladik and flights

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...

  3. 【40.17%】【codeforces 569B】Inventory

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  4. 【74.00%】【codeforces 747A】Display Size

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  5. 【codeforces 707E】Garlands

    [题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...

  6. 【codeforces 707C】Pythagorean Triples

    [题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...

  7. 【codeforces 709D】Recover the String

    [题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...

  8. 【codeforces 709B】Checkpoints

    [题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...

  9. 【codeforces 709C】Letters Cyclic Shift

    [题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...

随机推荐

  1. Web安全扫描工具

    使用 Ibm security appscan  进行WEB安全扫描. 1.SQL注入: 2.发现内部IP泄露模式: 3.已解密的登录请求: 4.HTML注释敏感信息泄露:

  2. html 页面刷新

    JS 脚本 方法1 setInterval 函数 定时局部刷新用到jQuery里面的setInterval方法, 该函数每隔一段时间请求一次数据,然后将请求结果返回给前端HTML实现刷新. setIn ...

  3. 支付宝接口程序、文档及解读(ASP.NET)

    最近需要为网站加入支付宝的充值接口,而目前关于支付宝接口开发的资料比较杂乱,这里就我此次开发所用到的资料进行汇总整理,希望能够帮助需要的朋友. 开发步骤: 1. 确定签约类型 支付宝的接口有多种类型, ...

  4. 解决VTune错误PMU resources currently being used by another profiling tool or process

    错误信息: When I ran Hardware Event-based Sampling Analysis 0, it showed the ERROR: Collection failed Co ...

  5. NOIP2012 同余方程 题解

    描写叙述 求关于x的同余方程ax ≡ 1 (mod b)的最小正整数解. 格式 输入格式 输入仅仅有一行,包括两个正整数a, b,用一个空格隔开. 输出格式 输出仅仅有一行,包括一个正整数x0.即最小 ...

  6. UVA - 11722 Joining with Friend 几何概率

                            Joining with Friend You are going from Dhaka to Chittagong by train and you ...

  7. python初始面向对象

    阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ...

  8. BZOJ 4241 分块

    思路: 考虑分块 f[i][j]表示从第i块开头到j的最大值 cnt[i][j]表示从第i块开始到序列末尾j出现了多少次 边角余料处理一下就好啦~ //By SiriusRen #include &l ...

  9. POJ 3185 DFS

    好像可以用高斯消元??? 但是用搜索写 这题就很水了... // by SiriusRen #include <bitset> #include <cstdio> using ...

  10. layui表格的新增和编辑功能前端代码

    html页面的代码(注意:引入layui相关的css): <div class="layui-form-item"> <label class="lay ...