kmp+最小表示法

#include<iostream>
#define maxn 1000010
using namespace std;
string str;
int nextt[maxn];
void get_next()
{nextt[0]=0;for(int i=1;i<str.size();i++){int k=nextt[i-1];while(str[i]!=str[k]&&k!=0) k=nextt[k-1];if(str[i]==str[k]) nextt[i]=k+1;else nextt[i]=0;}
}
int f(int flag)
{int i=0,j=1,k=0;while(i<str.size()&&j<str.size()&&k<str.size()){int t=str[(j+k)%str.size()]-str[(i+k)%str.size()];if(!t) k++;else{if(flag){if(t>0) i=i+k+1;else j=j+k+1;}else{if(t<0) i=i+k+1;else j=j+k+1; }if(i==j) j++;k=0;}}return min(i,j);
}
int main()
{cin.sync_with_stdio(false);while(cin>>str){get_next();int ans;int p=str.size()-nextt[str.size()-1];if(str.size()%p==0) ans=str.size()/p;else ans=1; int minn=f(0)+1;int maxx=f(1)+1;cout<<minn<<" "<<ans<<" "<<maxx<<" "<<ans<<endl;}return 0;
}
// agctagca

hdu 3374 String Proble相关推荐

  1. hdu 3374 String Problem (字符串最小最大表示 + KMP求循环节)

    Problem - 3374 KMP求循环节. http://www.cnblogs.com/wuyiqi/archive/2012/01/06/2314078.html 循环节推导的证明相当的好,这 ...

  2. HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)

    题目链接:点击查看 题目大意:给出一个字符串,现在问字符串不断向左循环所能形成的n个字符串中,字典序最小和最大的字符串的编号为多少,分别有多少个 题目分析:字符串最小表示法的模板题,证明和模板都是看大 ...

  3. HDU 3374 String Problem (KMP+最大最小表示)

    KMP,在有循环节的前提下: 循环节 t = len-next[len], 个数num = len/(len-next[len]); 个人理解,如果有循环节,循环节长度必定小于等于len/2, 换句话 ...

  4. HDU 3374 最小 / 大表示法

    题意 传送门 HDU 3374 String Problem 题解 求字符串中字典序最小与最大的循环同构串,并求解对应的起始字符在原字符串中出现的位置最早的一个,以及这个循环同构串出现的次数. 最小/ ...

  5. HDU 6194 string string string

    HDU 6194 输入一个字符串,求出现K次得子串个数 我的做法是求出大于等于K次的子串个数-大于等于K+1次的子串个数 #include <stdio.h> #include <s ...

  6. HDU 6096 String (AC自动机)

    题目链接 Problem Description Bob has a dictionary with N words in it. Now there is a list of words in wh ...

  7. HDU 2476 String painter (区间DP)

    题意:给出两个串a和b,一次只能将一个区间刷一次,问最少几次能让a=b 思路:首先考虑最坏的情况,就是先将一个空白字符串刷成b需要的次数,直接区间DP[i][j]表示i到j的最小次数. 再考虑把a变成 ...

  8. HDU - 6629 string matching(扩展KMP)

    题目链接:点击查看 题目大意:给出一个字符串 s 和一个暴力程序,用于求解 s 的每个后缀和原字符串的最长公共前缀,现在问一共需要执行多少次比较操作 题目分析:首先肯定不能暴力去模拟,时间复杂度n*n ...

  9. HDU - 6194 string string string(后缀数组+RMQ+容斥)

    题目链接:点击查看 题目大意:给出一个字符串和一个数字 k,问字符串中出现次数恰好等于 k 次的字串有多少个 题目分析:在跑完后缀数组后,我们可以用sa数组求解,具体做法是枚举起点,找长度为 k 的s ...

最新文章

  1. matlab设置数组输出到文件中,Matlab将元胞数组输出到txt或者dat文件中
  2. javascript格式化时间(几秒钟前,几分钟前,几小时前,几天前...)
  3. The role of the inter-controller consensus in the placement of distributed SDN controllers
  4. .bashrc文件在哪?
  5. 解析ArcFace源码
  6. C++bucket sort桶排序的实现算法(附完整源码)
  7. diff patch制作补丁打补丁
  8. python2.面向对象.学生管理
  9. 7.Reverse Integer (INT; Overflow)
  10. MySQL中Slave_IO_Running: Connecting问题
  11. pacbio 原始下机数据h5 文件简介
  12. 使用jQuery快速高效制作网页交互特效(1)
  13. 【前端_React】React小书
  14. Android 实现小红书登陆页面背景图无限滚动效果
  15. 【参赛作品94】21天openGauss学习之旅
  16. Oracle回收站机制
  17. Java调用存储过程(返回:简单类型VARCHAR、自定义对象STRUCT、列表数组VARRAY)
  18. 放大器构成电压跟随器 proteus仿真 TLV2252
  19. mac mysql my.cnf 路径_my.cnf文件在macOS上的位置
  20. linux文件管理器打不开

热门文章

  1. java开发平板_用Android平板来写代码 - Termux 环境搭建
  2. 《时代三部曲》感悟三
  3. 计算机学霸的电视剧,10部经典青春校园剧,每一部都让人怀念青春
  4. [JIRA] 从3.6.2旧版升级到新版6.0.8的详细过程
  5. 语音识别基础算法——动态时间规整算法
  6. 绕过tp路由器管理密码_TP路由器怎么重启 TP-Link无线路由器重启方法【详细介绍】...
  7. Asp.net中开发使用ActiveX控件
  8. 刚安装好的CAD一定要做这几个优化设置
  9. APP二维码下载 自动跳转
  10. 电商APP:移动电子商务新趋势