Shape Number (最小表示法)
题目链接
一个字符串,这个字符串的首尾是连在一起的,要求寻找一个位置,以该位置为起点的字符串的字典序在所有的字符串中中最小。
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 (最小表示法)相关推荐
- HDU 4162 Shape Number(最小表示法)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4162 大意:原串通过相邻的数字相减得到的差或8减该差得到一个新串,然后输出新串(看成环)中字典序最小的 那 ...
- 字符串循环同构的最小表示法(转)
循环字符串的最小表示法的问题可以这样描述: 对于一个字符串S,求S的循环的同构字符串S'中字典序最小的一个. 由于语言能力有限,还是用实际例子来解释比较容易: 设S=bcad,且S'是S的循环同构的串 ...
- 2018.07.17 洛谷P1368 工艺(最小表示法)
传送门 好的一道最小表示法的裸板,感觉跑起来贼快(写博客时评测速度洛谷第二),这里简单讲讲最小表示法的实现. 首先我们将数组复制一遍接到原数组队尾,然后维护左右指针分别表示两个即将进行比较的字符串的头 ...
- poj1509最小表示法
题意: 给你一个循环串,然后找到一个位置,使得从这个位置开始的整个串字典序最小. 思路: 最小表示法的建档应用,最小表示法很好理解,就点贪心的意思,一开始我们枚举两个起点i,j ...
- hdu3374最小表示法+KMP
题意: 给你一个最长100W的串,然后让你找到最小同构子串,还有最大同构子串的下标,最小同构子串就是把字符串连接成一个环,然后选择一个地方断开,得到的一个ASCII最小的子串(求最大同理) ...
- 【运筹学】运输规划、表上作业法总结 ( 运输规划模型 | 运输规划变量个数 | 表上作业法 | 最小元素法 | 差额 Vogel 法 ★ | 闭回路法 ) ★★★
文章目录 一.运输规划模型 1.产销平衡模型 2.产销不平衡模型 二.运输规划数学模型变量个数 三.表上作业法 四.表上作业法 : 求初始基可行解 1.最小元素法 2.差额法 ( Vogel ) 推荐 ...
- 【运筹学】表上作业法 ( 示例 | 使用 “ 最小元素法 “ 找初始基可行解 )
文章目录 一.运输规划问题 二.找初始基可行解 一.运输规划问题 运输规划问题 : B1\rm B_1B1 B1\rm B_1B1 B1\rm B_1B1 B1\rm B_1B1 产量 A1\ ...
- 【运筹学】表上作业法 ( 最小元素法分析 | Vogel 方法 )
文章目录 一." 最小元素法 " 分析 二.Vogel 方法 ( 差额法 ) 一." 最小元素法 " 分析 在上一篇博客 [运筹学]表上作业法 ( 求初始基可行 ...
- 【运筹学】表上作业法 ( 求初始基可行解 | 最小元素法 )
文章目录 一.表上作业法 第一步 : 确定初始基可行解 二.最小元素法 一.表上作业法 第一步 : 确定初始基可行解 运输问题如下 : 下面的表格代表 333 个产地 , 444 个销地 的运输规划问 ...
最新文章
- uni-app小程序v-show内容始终不显示
- Android笔记:LitePal库的更新,DataSupport被弃用问题
- 如果用中文编程....那么... (如果..那么...这搭配很完整吧)
- javascript 类型及类型判断
- CloudEngine 6800 堆叠场景下配置eth-trunk链路聚合流量负载不均衡
- 信息学奥赛C++语言: 趣味整数1(自守数)
- 洛谷——P1909 [NOIP2016 普及组] 买铅笔
- 概率论概念及机器学习中样本相似性度量之马氏距离
- 最简单的方法实现小程序按钮跳转到指定界面
- 快播(QvodPlayer)最新版 v5.20.234 官方版
- 用Excel绘制曲线图
- 记一次某制造业ERP系统 CPU打爆事故分析
- 计算机键盘上除在哪里,backspace键在哪里
- Windows下Jena+fuseki安装配置和简单使用(没有eclipse)
- EXCEL数据分析项目 - 商贸企业销售数据分析实战
- 制作7Z格式可安装程序包
- 工信部于佳宁:区块链要服务实体经济
- Unity资源管理(四)-AssetBundle使用模式
- 手算梯度下降法,详解神经网络迭代训练过程
- node.js邮箱验证码