博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #482 (Div. 2) B、Treasure Hunt(模拟+贪心)979B
阅读量:5334 次
发布时间:2019-06-15

本文共 839 字,大约阅读时间需要 2 分钟。

大致题意

    n表示要进行n次操作,接着给出三个字符串,表示三个人初始拥有的串。每次操作要替换字符串中的字母,询问最后在游戏中曾出现过的相同的子串谁最多。

思路

  (1)  讨论最多的子串,肯定是全部转换成单个的字母是最优的,这样就把子串转换成了讨论出现过最多的字母的问题。接下来只需要模拟,先将初始串中有的最多的字母数统计出来,然后考虑一下剩下的字符数和n的关系就可以了。需要注意的是,初始的字符串是不计入统计的,也就是说,至少在经过一次操作后我们才对它们的最大长度进行比较。

(2)显然只需关注字符而非子串。

枚举每个字符,尽力使其他字符变成它。

只有一种情况需要注意!如果字符a的出现次数等于len,并且n=1,那么你不得不将一个字符a变为其他的字符,最终最多只能有len-1个a.

AC代码:

#include
#include
#include
#include
#include
using namespace std;map
mp;char s[100001];int n;int so(){ int ans=-1; mp.clear(); cin>>s; int len=strlen(s); for(int i=0 ; i
max2&&max1>max3) puts("Kuro"); else if(max2>max1&&max2>max3) puts("Shiro"); else if(max3>max1&&max3>max2) puts("Katie"); else puts("Draw");}
View Code

 

转载于:https://www.cnblogs.com/shuaihui520/p/9046308.html

你可能感兴趣的文章
访问子节点childNodes
查看>>
Bate敏捷冲刺每日报告--day5
查看>>
【THUSC2017】巧克力
查看>>
Lintcode---将二叉树拆成链表
查看>>
网络层使用的协议
查看>>
mac Java环境配置
查看>>
memcached了解及使用及命令
查看>>
Yukari's Birthday 枚举+二分 过程注意数据的溢出问题 HDU4430
查看>>
Python python 数据类型--集
查看>>
48.UIButton上的字体居右对齐
查看>>
67.数组倒序排列
查看>>
Idea安装lombok插件【转载】
查看>>
jQuery 事件
查看>>
linux用户管理命令
查看>>
别让无知成恶趣!
查看>>
WebPack基本概念以及基本使用
查看>>
nginx
查看>>
VB.NET语法小结
查看>>
Oracle学习系列7
查看>>
atitit.解决net.sf.json.JSONException There is a cycle in the hierarchy
查看>>