poj 1509 Glass Beads(最小表示法模板题)
来源:互联网 发布:足彩关注软件 编辑:程序博客网 时间:2024/06/09 12:21
The necklace should be made of glass beads of different sizes connected to each other but without any thread running through the beads, so that means the beads can be disconnected at any point. The actress chose the succession of beads she wants to have and the IBM promised to make the necklace. But then he realized a problem. The joint between two neighbouring beads is not very robust so it is possible that the necklace will get torn by its own weight. The situation becomes even worse when the necklace is disjoined. Moreover, the point of disconnection is very important. If there are small beads at the beginning, the possibility of tearing is much higher than if there were large beads. IBM wants to test the robustness of a necklace so he needs a program that will be able to determine the worst possible point of disjoining the beads.
The description of the necklace is a string A = a1a2 ... am specifying sizes of the particular beads, where the last character am is considered to precede character a1 in circular fashion.
The disjoint point i is said to be worse than the disjoint point j if and only if the string aiai+1 ... ana1 ... ai-1 is lexicografically smaller than the string ajaj+1 ... ana1 ... aj-1. String a1a2 ... an is lexicografically smaller than the string b1b2 ... bn if and only if there exists an integer i, i <= n, so that aj=bj, for each j, 1 <= j < i and ai < bi.
The input consists of N cases. The first line of the input contains only positive integer N. Then follow the cases. Each case consists of exactly one line containing necklace description. Maximal length of each description is 10000 characters. Each bead is represented by a lower-case character of the english alphabet (a--z), where a < b ... z.
<b< dd="">
For each case, print exactly one line containing only one integer -- number of the bead which is the first at the worst possible disjoining, i.e. such i, that the string A[i] is lexicographically smallest among all the n possible disjoinings of a necklace. If there are more than one solution, print the one with the lowest i.
helloworld
amandamanda
dontcallmebfu
aaabaaa
11
6
5
思路:
最小表示法模板题。。。把模板贴上去就ac了
代码:
#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<string>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<vector>#include<deque>#include<algorithm>using namespace std;#define lson k*2#define rson k*2+1#define M (t[k].l+t[k].r)/2#define INF 100861111#define ll long long#define eps 1e-15int getmin(char T[])//flag里面0为最小表示法,1为最大表示法{ int i=0,j=1,k=0; int tlen=strlen(T); while(i<tlen&&j<tlen&&k<tlen) { int t=T[(i+k)%tlen]-T[(j+k)%tlen]; if(!t) k++; 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(){ int test,i,j; char s[10005]; scanf("%d",&test); while(test--) { scanf("%s",s); printf("%d\n",getmin(s)+1); } return 0;}
- poj 1509 Glass Beads (最小表示法,模板题)
- poj 1509 Glass Beads(最小表示法模板题)
- poj 1509 Glass Beads【最小表示法】
- Glass Beads - POJ 1509 最小表示法
- POJ 1509 Glass Beads(字符串的最小表示法)
- POJ 1509 Glass Beads(SAM 求最小表示法)
- poj - 1509 - Glass Beads(最小表示法)
- POJ 1509 Glass Beads(最小表示法)
- POJ 1509 Glass Beads(最小表示法、后缀自动机)
- [最小表示] poj 1509 Glass Beads
- POJ 1509 Glass Beads【后缀自动机、最小表示法】
- 【字符串最小表示法】 POJ 1509 Glass Beads
- POJ-1509 Glass Beads (字符串最小表示法&后缀自动机)
- POJ 1509 Glass Beads【字符串最小表示法】
- PKU 1509 Glass Beads (最小表示法)
- Glass Beads-最小表示法
- uva 719 - Glass Beads最小表示法模板
- zoj 2006 Glass Beads(字符串的最小表示模板题)
- 由浅至深学习block
- attribute value must be constant
- Git学习(GitHug安装及其闯关攻略)
- http协议笔记
- Swift3中数组创建方法
- poj 1509 Glass Beads(最小表示法模板题)
- 网页编程--JSON对象封装的三种方式
- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a
- unity本地分数排行榜简单解决方案(Json)
- JavaWeb——文件上传和下载
- JAVA-初步认识-第二章-算术运算符1知识点整理
- jsp九大内置对象
- iOS中Block的基础
- python面试题