Cyclic Nacklace
来源:互联网 发布:好玩的交友软件 编辑:程序博客网 时间:2024/06/15 09:50
As Christmas is around the corner, Boys are busy in choosing christmas presents to send to their girlfriends. It is believed that chain bracelet is a good choice. However, Things are not always so simple, as is known to everyone, girl's fond of the colorful decoration to make bracelet appears vivid and lively, meanwhile they want to display their mature side as college students. after CC understands the girls demands, he intends to sell the chain bracelet called CharmBracelet. The CharmBracelet is made up with colorful pearls to show girls' lively, and the most important thing is that it must be connected by a cyclic chain which means the color of pearls are cyclic connected from the left to right. And the cyclic count must be more than one. If you connect the leftmost pearl and the rightmost pearl of such chain, you can make a CharmBracelet. Just like the pictrue below, this CharmBracelet's cycle is 9 and its cyclic count is 2:
abcdefghi abcdefghi
Now CC has brought in some ordinary bracelet chains, he wants to buy minimum number of pearls to make CharmBracelets so that he can save more money. but when remaking the bracelet, he can only add color pearls to the left end and right end of the chain, that is to say, adding to the middle is forbidden.
CC is satisfied with his ideas and ask you for help
Each test case contains only one line describe the original ordinary chain to be remade. Each character in the string stands for one pearl and there are 26 kinds of pearls being described by 'a' ~'z' characters. The length of the string Len: ( 3 <= Len <= 100000 ).
3aaaabcaabcde
025
例: abaabbab, l为字符串长度,由KMP中Next数组求得Next[l]=2,ans=l-Next[l]就是该串的最小循环节。看似是用最小循环节减去Next[l]就得需要的字符数了。
但如串abaabaaba,
abaabaaba Next[l]=6,匹配好得串abaaba中出现了俩个循环节。l-Next[l]%ans为正确结果。(也如abaabaab【帮助理解)
代码:
#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>using namespace std;const int maxn=1e5+10;char str[maxn];int Next[maxn];void getNxet(){ int len=strlen(str); int i=0; int j=-1; while(i<len) { if(j==-1||str[i]==str[j]) { i++; j++; Next[i]=j; } else j=Next[j]; }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%s",str); int l=strlen(str); Next[0]=-1; getNxet(); int ans=l-Next[l];//最小循环节 if(ans!=l&&l%ans==0)//abcabc情况 printf("0\n"); else printf("%d\n",ans-Next[l]%ans); }}
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- Cyclic Nacklace
- hdu3746 Cyclic Nacklace
- HDU-3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdoj 3746 Cyclic Nacklace
- 【KMP】 hdu3746 Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU3746:Cyclic Nacklace
- hdu 3746 Cyclic Nacklace
- HDU 3746 Cyclic Nacklace
- hdu3476-Cyclic Nacklace
- git 报错 git [rejected] master -> master (fetch first)(non-fast forward) 的解决方法
- 此工厂上启用了手动寻址,因此发送的所有消息都必须进行预寻址。
- 开篇
- 用于缓存的读写锁
- Android混淆打包
- Cyclic Nacklace
- 当前主流量化平台整理201705版
- kmp算法(大致伪码)
- FAT32文件系统的存储组织结构(二)
- PHP启示录
- 第六课:后端代理
- HDU-2000 ASCII码排序
- 如何让HDFS更高效之利用数据冷热度篇
- 简单的Fresco加载图片和GIF图片加载与停止