求字符串循环同构中字典序最小的,用最小表示法做的。

 1 #include <stdio.h>
 2 #include <string.h>
 3 const int N = 10010;
 4 char s[N];
 5 int main()
 6 {
 7     int n,i,j,k,t,l;
 8     scanf("%d",&n);
 9     while(n--)
10     {
11         scanf("%s",s);
12         l = strlen(s);
13         i = k = 0; j = 1;
14         while(i<l && j<l && k<l)
15         {
16             t = s[(i+k)%l] - s[(j+k)%l];
17             if(!t) k++;
18             else
19             {
20                 if(t > 0) i += k+1;
21                 else j += k+1;
22                 if(i == j) j++;
23                 k = 0;
24             }
25         }
26         printf("%d\n",++i < ++j ?i :j);
27     }
28     return 0;
29 }

转载于:https://www.cnblogs.com/lzxskjo/archive/2012/08/29/2661093.html

poj - 1509 Glass Beads相关推荐

  1. POJ 1509 Glass Beads 后缀自动机

    求给定字符串s从哪个位置开始的循环同构串字典序最小. 如果复制一遍s,发现其所有循环同构都是新字符串ss的长度为|s|的子串. 于是后缀自动机..dfs,不断地走字典序最小的边,直到走了|s|次即可. ...

  2. @poj - 1509@ Glass Beads

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个由小写字母构成的圆环形的字符串(即首字母和末字母是相连的 ...

  3. POJ - 1509 Glass Beads

    传送门 最小表示法模板 //Achen #include<algorithm> #include<iostream> #include<cstring> #incl ...

  4. POJ 1509 Glass Beads

    Description 求字符串的最小循环表示. Sol SAM. 把原串复制一遍,建出SAM,然后每次选最小的一个跑 \(len\) 次,这就是最小循环表示的最后一个节点,然后 \(x-len+1\ ...

  5. UVA719 Glass Beads 最小表示 / 后缀自动机

    传送门 题意: 求sss的最小表示. ∣s∣≤1e4|s|\le 1e4∣s∣≤1e4 思路: 可以选择直接套最小表示法的板子,但也可以将sss复制,即ss=s+sss=s+sss=s+s,对ssss ...

  6. 【POJ1509】Glass Beads 【后缀自动机】

    题意 给出一个字符串,求它的最小表示法. 分析 这个题当然可以用最小表示法做啦!但是我是为了学后缀自动机鸭! 我们把这个字符串长度乘二,然后建SAM,然后在SAM上每次跑最小的那个字母,找出长度为n的 ...

  7. (Incomplete) UVa 719 Glass Beads

    方法:最小表示法 题意及求一个string最小表示法的启示index.套用模版即可. code: 1 #include <cstdio> 2 #include <cstring> ...

  8. POJ1509 Glass Beads [后缀自动机]

    题意: 给一个字符串S,每次可以将它的第一个字符移到最后面,求这样能得到的字典序最小的字符串.输出开始下标 练习SAM第一题! SS构造SAM,然后从开始尽量走最小走n步就可以啦 什么?开始位置?!R ...

  9. Glass Beads

    是一个裸的最小表示法问题 #include<iostream> using namespace std; int t,n; string str; int getmin() {int i= ...

  10. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

最新文章

  1. php网页连mysql_php - 如何在单个网页上连接多个MySQL数据库?
  2. LintCode 795. 4种独特的路径(DFS)
  3. 没有run窗口_使用 Terminator 在一个窗口中运行多个终端 | Linux 中国
  4. 转:Deep learning系列(十五)有监督和无监督训练
  5. linux r后台执行,screen 命令简单用法 Linux后台执行 就用它
  6. PTA 2-1 列出连通集【DFS+BFS基础】
  7. vue生命周期及其应用场景
  8. 四则运算 python
  9. 基础矩阵,本质矩阵,单应性矩阵讲解,在ORB-SLAM相机的位姿初始化的应用
  10. Docker 快速安装教程
  11. (原創) 將所有的include都寫在.h中,可避免重複include (C/C++) (C)
  12. 用word模仿手写字体
  13. nssa和stub_STUB与NSSA区域总结
  14. postgres 导入纯文本数据txt
  15. 七牛云 CDN 调用
  16. 2023年有哪些值得推荐的蓝牙耳机?小米|南卡|JBL等等高性价比蓝牙耳机推荐
  17. 大数据量(例如几十万或者几百万的量)怎么导入到excel中
  18. 宝塔Linux面板命令大全(详细完整版)
  19. Supervisor 安装与配置
  20. 测试大咖漫谈测试人职业发展

热门文章

  1. python入门:基础,列表、元组、字典及集合类型
  2. ffmpeg drawtext文本超出视频画幅处理
  3. qtscrcpy自定义按键_操作更简单的QtScrcpy
  4. pytorch nonzero_[深度学习框架]PyTorch常用代码段
  5. 常见数学符号及其读法
  6. html页面如何复用,html代码用js实现复用
  7. Jetpack 介绍
  8. Amlogic_Android7.1 HDMI显示流程源码分析
  9. 文本输入框,实现模糊搜索结果
  10. C语言 · 冒泡法排序