热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

codeforces979B.TreasureHunt(模拟,字符替换)

题目:http:codeforces.comcontest979problemB题意:有三个字符串,字符代表颜色,要求分别

题目:http://codeforces.com/contest/979/problem/B

题意:有三个字符串,字符代表颜色,要求分别对每个字符串必须修改字符n次,使得最后自己串中相同的字符能达到最多。求经过n次修改,这三个字符串中相同字符最多的是哪一串?或是平局(最多的串>=2个)

思路:字符串中的字符自然是最终都要往出现最多的那个字符的方向化的

直接从WA点开始讲:

1. 修改的这n次是必须要用完的 "Every turn" "must change strictly one color"  (WA5)

2.等到所有字符都化成相同的以后,还有剩余的次数时,最佳方案并不一定是在一个字符上来回地变换(a->b->a->b...),偶数这样可以,若奇数也是可以最后化到原来颜色的(如: a   ->b->c->a (WA6  (下面数据放的是86,95  都是同一种))

3.接第2条,剩余次数是奇数时也有化不到原来颜色的情况:字符串最初时就完全同色,但修改次数n为1时

所以综合 2,3条 也就有了

if(mx[i]else mx[i]=len-(n==1); //这个else就是(只)指mx[i]==len这种情况了

#include
#pragma GCC optimize(3)
//#pragma GCC optimize("unroll-loops")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast,no-stack-protector")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define pb push_back
#define mkp(a,b) make_pair(a,b)
#define PII pair
#define PLL pair
#define fi first
#define se second
#define lc (d<<1) //d*2
#define rc (d<<1|1) //d*2&#43;1
#define eps 1e-9
#define dbg(x) cerr <<#x <<" &#61; " <#define mst(a,val) memset(a,val,sizeof(a))
#define stn(a) setprecision(a)//小数总有效位数
#define stfl setiosflags(ios::fixed)//点后位数:cout<using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double PI&#61;3.1415926535897932;
const int MAXN&#61;1e5&#43;10;
const ll mod&#61;1e9&#43;7;
ll inline mpow(ll a,ll b){ll ans&#61;1;a%&#61;mod;while(b){if(b&1)ans&#61;(ans*a)%mod;a&#61;(a*a)%mod,b>>&#61;1;}return ans;}
int inline sgn(double x){return (x>-eps)-(xpriority_queue,greater > qu; //up
priority_queue,less > qd; //dn
const int inf &#61; 0x3f3f3f3f; //9
const ll inff &#61; 0x3f3f3f3f3f3f3f3f; //18int n;
char s[10][100010];
mapmp[10];
int mx[10];int main()
{fio;cin>>n;for(int i&#61;0;i<3;i&#43;&#43;) cin>>s[i];int len&#61;strlen(s[0]);for(int i&#61;0;i<3;i&#43;&#43;){int tmp&#61;0;for(int j&#61;0;jmx[1]&&mx[0]>mx[2]) {cout<<"Kuro"<mx[0]&&mx[1]>mx[2]) {cout<<"Shiro"<mx[0]&&mx[2]>mx[1]) {cout<<"Katie"<}/*
//5:
1
aaaaaaaaaa
AAAAAAcAAA
bbbbbbzzbb
//me: Draw
//answer:Shiro//86:
3
aaaaa
aaaaa
aaaab
//my:Katie
//answer:Draw//95:
4
aaaabcd
aaaabcd
aaaaaaa
//my:Katie
//answer:Draw
*/

 


推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 本文由编程笔记#小编整理,主要介绍了关于数论相关的知识,包括数论的算法和百度百科的链接。文章还介绍了欧几里得算法、辗转相除法、gcd、lcm和扩展欧几里得算法的使用方法。此外,文章还提到了数论在求解不定方程、模线性方程和乘法逆元方面的应用。摘要长度:184字。 ... [详细]
  • 本文介绍了Codeforces Round #321 (Div. 2)比赛中的问题Kefa and Dishes,通过状压和spfa算法解决了这个问题。给定一个有向图,求在不超过m步的情况下,能获得的最大权值和。点不能重复走。文章详细介绍了问题的题意、解题思路和代码实现。 ... [详细]
  • STL迭代器的种类及其功能介绍
    本文介绍了标准模板库(STL)定义的五种迭代器的种类和功能。通过图表展示了这几种迭代器之间的关系,并详细描述了各个迭代器的功能和使用方法。其中,输入迭代器用于从容器中读取元素,输出迭代器用于向容器中写入元素,正向迭代器是输入迭代器和输出迭代器的组合。本文的目的是帮助读者更好地理解STL迭代器的使用方法和特点。 ... [详细]
  • 本文介绍了SPOJ2829题目的解法及优化方法。题目要求找出满足一定条件的数列,并对结果取模。文章详细解释了解题思路和算法实现,并提出了使用FMT优化的方法。最后,对于第三个限制条件,作者给出了处理方法。文章最后给出了代码实现。 ... [详细]
  • C++ STL复习(13)容器适配器
    STL提供了3种容器适配器,分别为stack栈适配器、queue队列适配器以及priority_queue优先权队列适配器。不同场景下,由于不同的序列式 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • Android日历提醒软件开源项目分享及使用教程
    本文介绍了一款名为Android日历提醒软件的开源项目,作者分享了该项目的代码和使用教程,并提供了GitHub项目地址。文章详细介绍了该软件的主界面风格、日程信息的分类查看功能,以及添加日程提醒和查看详情的界面。同时,作者还提醒了读者在使用过程中可能遇到的Android6.0权限问题,并提供了解决方法。 ... [详细]
author-avatar
刘旭
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有