[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift
Posted mrsrz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift相关的知识,希望对你有一定的参考价值。
题目大意:
给你(A)个a,(B)个b,(C)个c,要你构造一个字符串,使它的最小循环表示法最大。求这个表示法。
解题思路:
不知道怎么证,但把a、b、c当做单独的字符串扔进容器,每次把字典序最小的和字典序最大的两个字符串合并就是答案。
容器用multiset即可。
C++ Code:
#include<cstdio> #include<set> #include<string> using namespace std; multiset<string>s; int main(){ int aa,bb,cc,p=0; scanf("%d%d%d",&aa,&bb,&cc); p=aa+bb+cc; for(;aa--;)s.insert("a"); for(;bb--;)s.insert("b"); while(cc--)s.insert("c"); while(--p){ auto st=(*s.begin())+*(--s.end()); s.erase(s.begin()); s.erase(--s.end()); s.insert(st); } puts((*s.begin()).c_str()); return 0; }
以上是关于[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift的主要内容,如果未能解决你的问题,请参考以下文章
atcoder CODE FESTIVAL 2017 qual C D - Yet Another Palindrome Partitioning
@atcoder - CODE FESTIVAL 2017 Final - J@ Tree MST
Atcoder Code Festival 2017 qual C 10.22 D题题解
[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift
[AtCoder Code Festival 2017 QualB C/At3574] 3 Steps - 二分图染色,结论