码迷,mamicode.com
首页 > 其他好文 > 详细

[Atcoder Code Festival 2017 Qual B Problem F]Largest Smallest Cyclic Shift

时间:2018-07-05 19:58:00      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:std   ras   c++   problem   can   ase   amp   nbsp   val   

题目大意:
给你\(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

标签:std   ras   c++   problem   can   ase   amp   nbsp   val   

原文地址:https://www.cnblogs.com/Mrsrz/p/9269905.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!