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;
}

最新文章

  1. 2小时入门Robot Framework
  2. Deprecated: Function split() is deprecated in ... 解决办法
  3. Mysql --分区(4)List分区
  4. opencv 重用代码块记录
  5. 高性能 Socket 组件 HP-Socket v3.2.1-RC2 公布
  6. nodejs安装:nodejs入门
  7. shell 批量压缩指定文件夹及子文件夹内图片
  8. Number,parseInt,parseFloat函数
  9. svg学习之旅(1)
  10. 一步到位Linux中安装配置MySQL及补坑
  11. .NET 绝对路径的配置
  12. SpriteBuilder中关节的Breaking force属性
  13. Python的基本用法
  14. ReactiveX 学习笔记(3)转换数据流
  15. javaweb的web.xml配置说明,初始化过程
  16. 【其他】csv文件打开是乱码,怎么办?
  17. 你的GAN训练得如何--GAN 的召回率(多样性)和精确率(图像质量)方法评估
  18. Alpha 冲刺报告
  19. rpm: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory解决办法
  20. java---正则表达式的字符串简单实用及扩展链接

热门文章

  1. Warning: skipping non-radio button in group
  2. Linux远程连接及常用指令
  3. 使用JavaScript调用手机平台上的原生API
  4. Python之Mac Scrapy爬虫小记
  5. Mybatis Learning Notes 1
  6. Make 学习笔记(1)
  7. x+2y+3z=n非负整数解
  8. MAC进入文件夹快捷键
  9. shell脚本,计算从0+2+4+6+....100的结果是多少?
  10. 使用xcode workspace 多个project协同工作