【codeforces 794C】Naming Company
【题目链接】: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的更多相关文章
- 【codeforces 415D】Mashmokh and ACM(普通dp)
[codeforces 415D]Mashmokh and ACM 题意:美丽数列定义:对于数列中的每一个i都满足:arr[i+1]%arr[i]==0 输入n,k(1<=n,k<=200 ...
- 【35.02%】【codeforces 734A】Vladik and flights
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【40.17%】【codeforces 569B】Inventory
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【74.00%】【codeforces 747A】Display Size
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 707E】Garlands
[题目链接]:http://codeforces.com/contest/707/problem/E [题意] 给你一个n*m的方阵; 里面有k个联通块; 这k个联通块,每个连通块里面都是灯; 给你q ...
- 【codeforces 707C】Pythagorean Triples
[题目链接]:http://codeforces.com/contest/707/problem/C [题意] 给你一个数字n; 问你这个数字是不是某个三角形的一条边; 如果是让你输出另外两条边的大小 ...
- 【codeforces 709D】Recover the String
[题目链接]:http://codeforces.com/problemset/problem/709/D [题意] 给你一个序列; 给出01子列和10子列和00子列以及11子列的个数; 然后让你输出 ...
- 【codeforces 709B】Checkpoints
[题目链接]:http://codeforces.com/contest/709/problem/B [题意] 让你从起点开始走过n-1个点(至少n-1个) 问你最少走多远; [题解] 肯定不多走啊; ...
- 【codeforces 709C】Letters Cyclic Shift
[题目链接]:http://codeforces.com/contest/709/problem/C [题意] 让你改变一个字符串的子集(连续的一段); ->这一段的每个字符的字母都变成之前的一 ...
随机推荐
- RobotFrameWork+APPIUM实现对安卓APK的自动化测试----第二篇【原理】
http://blog.csdn.net/deadgrape/article/details/50574459 接着上一篇,我们开始聊聊APPIUM的框架和运行模式.废话不多说直接上图. 1.首先自动 ...
- [SharePoint][SharePoint Designer 入门经典]Chapter8 XSLT数据试图和表单
本章概要: 1.不是利用XSLT web部件 2.使用XSLT web部件创建数据试图 3.使用XSLT表单web部件创建自定义表单 4.利用自定义动作执行列表表单
- [SharePoint2010开发入门经典]10、使用SPS2010构建面向服务的应用程序
本章概要: 1.使用SPS自带的web service 2.构建自定义web service 3.使用不同的客户端解决方案部署自定义站点
- python的数据可视化库 matplotlib 和 pyecharts
Matplotlib大家都很熟悉 不谈. ---------------------------------------------------------------------------- ...
- Visual C++ 经常使用快捷键
大写和小写 Ctrl+Shift+U: 所有变为大写 Ctrl+U: 所有变为小写 凝视 Ctrl+K+Crtr+C: 凝视选定内容 Ctrl+K+Crtr+U: 取消选定凝视内容 折叠 折叠代码: ...
- UVA 10127- Ones 数学
Given any integer 0 ≤ n ≤ 10000 not divisibleby 2 or 5, some multiple of n is a number whichin decim ...
- kubernetes系列:(二)、kubernetes部署mysql(单节点)
使用kubeadm搭建好kubernetes集群后就可以动手部署自己的应用了. 本文用例来自官网,如有需要请参看 kubernetes官网 一.环境说明 kubernetes 1.13.1 docke ...
- mybatis的二级缓存的使用
1.引入ehcache的jar包和mybatis整合ehcache的jar包: <!-- ehchache --> <dependency> <groupId>ne ...
- JEE Spring-boot 简单的ioc写法。
什么是ioc,就是你可能会有一些生活必需品,这些东西你必须要用才能存活.但是你不是每天都回去买,去哪一家点去买.而这些用品会一直放在哪里,每一个商店就是一个容器,包裹着这些物品. 创建ioc项目,首先 ...
- 利用PBFunc在Powerbuilder中进行图片格式转换
利用PBFunc的n_pbfunc_image对象可以方便的进行图片格式的转换与大小转换 支持相互转换的格式有以下几种: FORMAT_BMP //bmp格式FORMAT_GIF //gif格式FO ...