HDU3374 String Problem(KMP + 最小表示法)
来源:互联网 发布:mac魔法卡片助手 编辑:程序博客网 时间:2024/05/16 07:52
题目链接:HDU3374
题目大意:给你一个字符串,项链一样的可以循环表示 例如“SKYLONG”可以有7中表示形式。
SKYLONG 1
KYLONGS 2
YLONGSK 3
LONGSKY 4
ONGSKYL 5
NGSKYLO 6
GSKYLON 7
求出字典序最小和字典序最大的串以及他们的出现次数。
思路:
KMP求出循环节,最小表示法求出最小位置,最大位置
最小表示法模板题
【代码】
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1000000 + 10;char s[maxn];int nextv[maxn];int len;void getNext(){ //KMP的next数组int i = 0 , j = -1;nextv[0] = -1;while(i < len){if(j == -1 || s[i] == s[j])nextv[++i] = ++j;elsej = nextv[j];}}int minRepresentation(bool flag){int i = 0,j = 1,k = 0;while(i <len && j < len && k < len){int tmp = s[(i + k)%len] - s[(j + k) % len];if(tmp == 0) k++;else{if(flag? (tmp > 0):(tmp<0)) //如果 flag求出字典序最小,否则 求出最大i += k+1;elsej += k + 1;if(i == j)j ++ ;k = 0;}}return min(i,j);}int main(){while(scanf("%s",s)!=EOF){int minlen;// memset(nextv,0,sizeof(nextv));len = strlen(s);getNext();int length = len - nextv[len];int num;if (len % length == 0) num = len /length; //如果出现循环节 else num = 1;printf("%d %d %d %d\n",minRepresentation(1)+1,num,minRepresentation(0)+1,num);}return 0;}
1 0
- hdu3374 String Problem(KMP+最小表示法)
- HDU3374 String Problem(KMP + 最小表示法)
- HDU3374(String Problem)字符串-最小表示法+KMP
- hdu3374 String Problem(最小最大表示法+KMP)
- hdu3374-最小表示法&&kmp求循环节-String Problem
- HDU3374 String Problem(kmp,最大最小表示法)
- HDU3374 String Problem(KMP + 最大最小表示)
- hdu3374 最小表示法+kmp
- hdu3374(最小表示法+KMP)
- hdu3374最小表示法+KMP
- hdu3374 String Problem (字符串最小表示)
- 【KMP】 hdu3374 String Problem
- hdu3374最大最小表示+kmp
- String Problem-kmp+最小表示法
- HDOJ3374 String Problem 【KMP】+【最小表示法】
- String Problem (最小表示法+KMP)
- hdu3374 最小最大表示法kmp求循环节
- HDU 3374 String Problem(最小最大表示法+KMP)
- java Timer 定时任务(一)
- SAP锁对象(lock object)
- 代理模式
- java Timer 定时任务(二)
- C/C++——继承和派生
- HDU3374 String Problem(KMP + 最小表示法)
- linux grep 命令
- 第一次写博客 2015/11/26
- SDUT 3364-数据结构实验之图论八:欧拉回路(并查集)
- C3P0连接池初始化过程分析之二
- 开发中遇见的问题
- Oracle Dataguard部署
- Android开发总结笔记 AutoCompleteTextView和MultiAutoCompleteTextView(自动完成文本框) 1-3-8
- [iOS高级] UICollectionView实现瀑布流效果