暑假训练Round1——G: Hkhv的水题之二(字符串的最小表示)
Problem 1057: Hkhv的水题之二
Time Limits: 1000 MS Memory Limits: 65536 KB
64-bit interger IO format: %lld Java class name: Main
Description
杨神喜欢字符串,于是他写程序随机生成了n个长度不大于100的字符串。但是他认为这里面有一些字符串是一样的。比如,abcd,bcda,cdab,dabc这4个他认为就是一样的.
因此,杨神想知道,这些随机生成的字符串有几个是不同的,并且要输出这些字符串。杨神还有强迫症,输出的时候要按字典序从小到大排,字符串也要是最小的。
比如cdba要输出acdb.
Input
测试数据有多组。第一行输入n ( 1 <= n <= 10000) 接下来n行输入只有小写字母组成的字符串
Output
第一行为多少个字符串是不同的,接下来输出这些字符串,并且按字典序从小到大排。
Sample Input
5
asdfadf
abcd
bcda
cdab
dabc
Output for Sample Input
2
abcd
adfasdf
一开场发现这道题做过类似的,大水题,一提交,超时,关掉同步,WA,然后就开始无限WA了……弄了很久想不明白,问了学长发现是自己以前学这个的时候看的模版是错误的,最杯具的是这个模版一直用到这个比赛之前做过的题都是可以AC的……还好这次数据够强WA了……之后去学了下正确的写法,有空把会以前的题解代码都改成正确的……希望不会有人再被误导了
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
#define INF 0x3f3f3f3f
#define MM(x,y) memset(x,y,sizeof(x))
typedef pair<int,int> pii;
typedef long long LL;
const double PI=acos(-1.0);
string minp(string s)
{
int i=0,j=1,k=0,len=s.size(),t;
while (i<len&&j<len&&k<len)
{
t=s[(i+k)%len]-s[(j+k)%len];
if(!t)
k++;
else
{
if(t>0)
i+=k+1;
else
j+=k+1;
k=0;
if(i==j)
j++;
}
}
s+=s;
return s.substr(min(i,j),len);
}
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(0);
string s;
int n,i,j;
set<string>pos;
set<string>::iterator it;
while (cin>>n)
{
pos.clear();
for (i=0; i<n; i++)
{
cin>>s;
pos.insert(minp(s));
}
cout<<pos.size()<<endl;
for (it=pos.begin(); it!=pos.end(); it++)
cout<<*it<<endl;
}
return 0;
}
暑假训练Round1——G: Hkhv的水题之二(字符串的最小表示)的更多相关文章
- <hdu - 3999> The order of a Tree 水题 之 二叉搜索的数的先序输出
这里是杭电hdu上的链接:http://acm.hdu.edu.cn/showproblem.php?pid=3999 Problem Description: As we know,the sha ...
- 水题系列二:PhoneNumbers
问题描述: Phonenumbers 企业喜欢用容易被记住的电话号码.让电话号码容易被记住的一个办法是将它写成一 个容易记 住的 单词或 者短语 .例如 ,你 需要给 滑铁卢 大学打 电话时 ,可 以 ...
- 暑假训练round 3 题解
今天做题运气出奇的好,除了几处小错误调试之后忘记改掉了……最后还AK了……虽然题目不难,学长也说是福利局,但是对个人的鼓励作用还是挺大的……至此暑假训练就结束了,也算没有遗憾……. 题解如下: Pro ...
- 蓝桥杯 算法训练 Torry的困惑(基本型)(水题,筛法求素数)
算法训练 Torry的困惑(基本型) 时间限制:1.0s 内存限制:512.0MB 问题描述 Torry从小喜爱数学.一天,老师告诉他,像2.3.5.7……这样的数叫做质数.Torry突 ...
- hdu 2044:一只小蜜蜂...(水题,斐波那契数列)
一只小蜜蜂... Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepte ...
- Atcoder 水题选做
为什么是水题选做呢?因为我只会水题啊 ( 为什么是$Atcoder$呢?因为暑假学长来讲课的时候讲了三件事:不要用洛谷,不要用dev-c++,不要用单步调试.$bzoj$太难了,$Topcoder$整 ...
- poj 1007:DNA Sorting(水题,字符串逆序数排序)
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 80832 Accepted: 32533 Des ...
- poj 1002:487-3279(水题,提高题 / hash)
487-3279 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 236746 Accepted: 41288 Descr ...
- POJ2485Highways(prime 水题)
Highways Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 26516 Accepted: 12136 Descri ...
随机推荐
- 项目在cocos 2.23移植到cocos 3.1.0所出现的bug
在建项目时一定要注意选择源代码!而不是预编译库 "extensions/ExtensionMacros.h”: No such file 项目右键-属性-配置属性-c/c++ - 常规-附加 ...
- uvm_test——测试用例的起点
在UVM平台验证中,所有的test cases都extends uvm_test,首先,来看源代码 //------------------------------------------------ ...
- xp密钥
Windows XP 专业版 : CCC64-69Q48-Y3KWW-8V9GV-TVKRM
- ThreadLocal应用场景以及源码分析
一.应用篇 ThreadLocal介绍 ThreadLocal如果单纯从字面上理解的话好像是“本地线程”的意思,其实并不是这个意思,只是这个名字起的太容易让人误解了,它的真正的意思是线程本地变量. 实 ...
- Python之Mac Scrapy爬虫小记
最近在尝试用Python爬虫,在装Scrapy的过程中遇到了一些麻烦. 上网搜索资料也未能解决command not found scrapy的报错. 最后我删除scrapy,用pip3.6 inst ...
- iOS 随机数(Fixed)
ios 有如下三种随机数方法: 1. srand((unsigned)time(0)); //不加这句每次产生的随机数不变 int i = rand() % 5; 2. ...
- poj1595 水题
题意:输入n, 和c 统计1 - n 有多少个素数为cnt 若 2*c > cnt 则将素数全部输出 否则分支判断: 若cnt 为偶数,则从中心开始输出2*c 个 若cnt 为奇数,则从中 ...
- Dockerfile优化建议
1. 减少镜像层 一次RUN指令形成新的一层,尽量Shell命令都写在一行,减少镜像层. 2. 优化镜像大小:清理无用数据 一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到 ...
- kubernetes添加不了google apt-key
转自icepoint的博客 key来源 我的百度云盘 密码:v3wo 下载kube_apt_key.gpg到本地,上传到服务器后执行下面的命令 apt-get update && ap ...
- 用jquery操作xml文件
一. xml文件\内容读取 1.读取xml文件 $.get( xmlfile.xml , function (xml){ //xml即为可以读取使用的内容,具体读取见第2点 }); 2.读取xml内容 ...