题目链接

一个字符串,这个字符串的首尾是连在一起的,要求寻找一个位置,以该位置为起点的字符串的字典序在所有的字符串中中最小。

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 inline ll read(){
 5     int x = 0, f = 1; char ch = getchar();
 6     while(ch > '9' || ch < '0'){if (ch == '-') f = -1; ch = getchar();}
 7     while(ch >= '0' && ch <= '9'){ x = x*10+ch-'0'; ch = getchar();}
 8     return x*f;
 9 }
10
11 /************************************************************************/
12
13 const int maxn = 3e5+7;
14 char s[maxn];
15 char str[maxn];
16
17 int minimalRepresentation(char *str)
18 {
19     int len = strlen(str);
20     int i = 0, j = 0, k = 0;
21     while(i < len && j < len && k < len){
22         if(k == len) break;
23         if(i == j) j++;
24         int ni = i+k, nj = j+k;
25         if(ni >= len) ni -= len;
26         if(nj >= len) nj -= len;
27         if(str[ni] > str[nj]){
28             i += k+1;
29             k = 0;
30         }
31         else if( str[ni] < str[nj]){
32             j += k+1;
33             k = 0;
34         }
35         else k++;
36     }
37     return i;
38 }
39
40 int main(){
41     while(~scanf("%s", s)){
42         int n = strlen(s);
43         for(int i = 0;i < n;i++){
44             if(i == n-1){
45                 str[i] = (((s[0] - '0') + 8 - (s[i] - '0')) % 8) + '0';
46             }
47             else {
48                 str[i] = (((s[i+1] - '0') + 8 - (s[i] - '0')) % 8) + '0';
49             }
50         }
51         int Start = minimalRepresentation(str);
52         for(int i = 0;i < n;i++){
53             printf("%c", str[(Start + i) % n]);
54         }
55         printf("\n");
56     }
57     return 0;
58 }

转载于:https://www.cnblogs.com/ouyang_wsgwz/p/9888994.html

Shape Number (最小表示法)相关推荐

  1. HDU 4162 Shape Number(最小表示法)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4162 大意:原串通过相邻的数字相减得到的差或8减该差得到一个新串,然后输出新串(看成环)中字典序最小的 那 ...

  2. 字符串循环同构的最小表示法(转)

    循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S'中字典序最小的一个. 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S'是S的循环同构的串 ...

  3. 2018.07.17 洛谷P1368 工艺(最小表示法)

    传送门 好的一道最小表示法的裸板,感觉跑起来贼快(写博客时评测速度洛谷第二),这里简单讲讲最小表示法的实现. 首先我们将数组复制一遍接到原数组队尾,然后维护左右指针分别表示两个即将进行比较的字符串的头 ...

  4. poj1509最小表示法

    题意:       给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小. 思路:       最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j ...

  5. hdu3374最小表示法+KMP

    题意:       给你一个最长100W的串,然后让你找到最小同构子串,还有最大同构子串的下标,最小同构子串就是把字符串连接成一个环,然后选择一个地方断开,得到的一个ASCII最小的子串(求最大同理) ...

  6. 【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★

    文章目录 一.运输规划模型 1.产销平衡模型 2.产销不平衡模型 二.运输规划数学模型变量个数 三.表上作业法 四.表上作业法 : 求初始基可行解 1.最小元素法 2.差额法 ( Vogel ) 推荐 ...

  7. 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )

    文章目录 一.运输规划问题 二.找初始基可行解 一.运输规划问题 运输规划问题 : B1\rm B_1B1​ B1\rm B_1B1​ B1\rm B_1B1​ B1\rm B_1B1​ 产量 A1\ ...

  8. 【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )

    文章目录 一." 最小元素法 " 分析 二.Vogel 方法 ( 差额法 ) 一." 最小元素法 " 分析 在上一篇博客 [运筹学]表上作业法 ( 求初始基可行 ...

  9. 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )

    文章目录 一.表上作业法 第一步 : 确定初始基可行解 二.最小元素法 一.表上作业法 第一步 : 确定初始基可行解 运输问题如下 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问 ...

最新文章

  1. uni-app小程序v-show内容始终不显示
  2. Android笔记:LitePal库的更新,DataSupport被弃用问题
  3. 如果用中文编程....那么... (如果..那么...这搭配很完整吧)
  4. javascript 类型及类型判断
  5. CloudEngine 6800 堆叠场景下配置eth-trunk链路聚合流量负载不均衡
  6. 信息学奥赛C++语言: 趣味整数1(自守数)
  7. 洛谷——P1909 [NOIP2016 普及组] 买铅笔
  8. 概率论概念及机器学习中样本相似性度量之马氏距离
  9. 最简单的方法实现小程序按钮跳转到指定界面
  10. 快播(QvodPlayer)最新版 v5.20.234 官方版
  11. 用Excel绘制曲线图
  12. 记一次某制造业ERP系统 CPU打爆事故分析
  13. 计算机键盘上除在哪里,backspace键在哪里
  14. Windows下Jena+fuseki安装配置和简单使用(没有eclipse)
  15. EXCEL数据分析项目 - 商贸企业销售数据分析实战
  16. 制作7Z格式可安装程序包
  17. 工信部于佳宁:区块链要服务实体经济
  18. Unity资源管理(四)-AssetBundle使用模式
  19. 手算梯度下降法,详解神经网络迭代训练过程
  20. node.js邮箱验证码

热门文章

  1. 干货收藏!639页《深度学习:Deep Learning》图文并茂课程PPT
  2. 想学数学建模???先来看会这几个MATLAB题吧!!!(一)
  3. 让你又爱又恨的推荐系统--程序猿篇
  4. 用 LSTM 做时间序列预测的一个小例子
  5. QT5+ROS程序开发
  6. 《Kali+Linux渗透测试的艺术》学习总结之----Kali Linux简介
  7. 为Android安装BusyBox
  8. 00038oracle,ORACLE错误一览表
  9. html nthchild作用,需要对HTML,nth-child进行一些解释
  10. double 保留两位小数