博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Largest Smallest Cyclic Shift
阅读量:6707 次
发布时间:2019-06-25

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

Largest Smallest Cyclic Shift

题目来源:

题目大意:

\(X\)个字符'a'\(Y\)个字符'b'\(Z\)个字符'c'。用它们组成字符串,求最小表示的最大值。

思路:

贪心。首先将所有由单个字符构成的字符串插入到一个multiset<string>中,每次选取最小串\(s\)和最大串\(t\)。此时最小表示一定是由\(s\)开头的,而将\(t\)接在\(s\)后面可以让最小表示尽可能大,因此可以将\(s\)\(t\)multiset中删去,插入\(s+t\),最后仅剩一个串时将其输出即可。

源代码:

#include
#include
#include
#include
inline int getint() { register char ch; while(!isdigit(ch=getchar())); register int x=ch^'0'; while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0'); return x;}int main() { std::multiset
set; for(register int i=getint();i;i--) set.insert("a"); for(register int i=getint();i;i--) set.insert("b"); for(register int i=getint();i;i--) set.insert("c"); while(set.size()>1) { std::string s=*set.begin(),t=*set.rbegin(); set.erase(set.lower_bound(s)); set.erase(set.lower_bound(t)); set.insert(s+t); } printf("%s\n",(*set.begin()).c_str()); return 0;}

转载于:https://www.cnblogs.com/skylee03/p/9268638.html

你可能感兴趣的文章
使用Spring Session做分布式会话管理
查看>>
mongodb的NUMA问题
查看>>
js进阶 12-14 jquery的事件触发函数是哪两个
查看>>
MySQL MERGE存储引擎 简介
查看>>
atitit。自己定义uml MOF EMF体系eclipse emf 教程o7t
查看>>
atitit.taskService 任务管理器的设计 v1
查看>>
编写jquery插件的分享
查看>>
机器学习 —— 概率图模型(学习:对数线性模型)
查看>>
2016百度编程题:蘑菇阵
查看>>
解决教学问题新感悟
查看>>
nyoj 37 回文字符串
查看>>
ASP.NET Core 1.0基础之依赖注入
查看>>
Excel里的单元格提行
查看>>
Matlab最短路径问题记录
查看>>
c语言单链表实现
查看>>
tcpdump非常实用的抓包实例
查看>>
ORACLE 日期函数 MONTHS_BETWEEN
查看>>
struts2.3+spring3.2+hibernate4.2例子
查看>>
进程调度
查看>>
北京地铁新机场线列车亮相调试 设计时速160公里/小时
查看>>