最强阵容加强版

1613: 最强阵容加强版

时间限制: 1 Sec  内存限制: 128 MB

题目描述

拿着新换来的英雄卡,小李满心欢喜的准备和同学们PK一下。
他们的游戏规则非常简单,双方把自己的牌绕成一圈,然后指定一个起点,从该张牌开始顺时针方向往后取,谁取出的字符串字典序更小(从左到右开始比较,碰到第一个不一样的字符进行比较,比较规则为a<b<…<z)谁将获得胜利。具体规则可参考样例。虽然现在小李的牌已经很好了,但是你能不能帮他快速算出起始位置,使得他能够派出最强阵容。

输入

第一行n,表示共有n张牌。
第二行共n个用一个空格隔开的小写字母,表示给定的一圈牌起始序列。

输出

仅一个整数,能获得最小字典序字符串的起点位置。如果有多个位置开始的字符串一样,则输出最小的那个位置,且第一个位置从1开始。

样例输入

4
b c a b

样例输出

3

提示

【样例说明】

四个位置取出的字符串分别为bcab,cabb,abbc,bbca,显然最小位置是3。

【数据规模】

30%的数据,1<=n<=10

60%的数据,1<=n<=1000

100%的数据,1<=n<=300000

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<algorithm>
 4 using namespace std;
 5 int a[600005];
 6 int main()
 7 {
 8     int n; scanf("%d",&n);
 9     int ch; scanf("%c",&ch);
10     for (int i=1;i<n;i++) scanf("%c ",&a[i]),a[i+n]=a[i];
11     scanf("%c",&a[n]); a[n+n]=a[n];
12     int i=1,j=2;
13     while (j<=n){
14         int k;
15         for (k=0;k<n;k++)
16             if (a[i+k]<a[j+k]){
17                 j=j+k+1; break;
18             } else if (a[i+k]>a[j+k]){
19                 i=j; j=j+1; break;
20             }
21         if (k==n) j=j+k;
22     }
23     printf("%d",i);
24 }

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 using namespace std;
 7 #define P 27
 8 #define P1 1795876273
 9 #define P2 2001122927
10 #define N 600005
11 long long a[N],f1[N],f2[N],fp1[N],fp2[N];
12 #define F1(i,j) mo(f1[j]-f1[i-1]*fp1[j-i+1],P1)
13 #define F2(i,j) mo(f2[j]-f2[i-1]*fp2[j-i+1],P2)
14 int mo(long long a,int q)
15 {
16     a=a%q; if (a<0) a+=q;
17     return a;
18 }
19 int check(int i,int j,int k){
20     if (k==1) {
21         if (a[i]<=a[j]) return 0;
22         return 1;
23     }
24     //cout<<i<<" "<<j<<" "<<i+k/2-1<<" "<<j+k/2-1<<endl;
25     if (F1(i,i+k/2-1)==F1(j,j+k/2-1) && F2(i,i+k/2-1)==F2(j,j+k/2-1))
26         check(i+k/2,j+k/2,(k+1)/2);
27     else check(i,j,k/2);
28 }
29 int main()
30 {
31     int n; scanf("%d",&n);
32     int ch; scanf("%c",&ch);
33     for (int i=1;i<n;i++) scanf("%c ",&a[i]),a[i+n]=a[i];
34     scanf("%c",&a[n]); a[n+n]=a[n];
35     for (int i=1;i<=n+n;i++) a[i]-=96;
36     for (int i=1;i<=n+n;i++) f1[i]=mo(f1[i-1]*P+a[i],P1);
37     for (int i=1;i<=n+n;i++) f2[i]=mo(f2[i-1]*P+a[i],P2);
38     fp1[0]=1; fp2[0]=1;
39     for (int i=1;i<=n+n;i++) fp1[i]=mo(fp1[i-1]*P,P1);
40     for (int i=1;i<=n+n;i++) fp2[i]=mo(fp2[i-1]*P,P2);
41     //cout<<check(1,2,n)<<" "<<check(2,3,n)<<" "<<check(3,4,n);
42     int ans=1;
43     for (int i=2;i<=n;i++)
44         if (check(ans,i,n)) ans=i;
45     printf("%d",ans);
46 }  

时间: 2024-09-17 12:12:03

最强阵容加强版的相关文章

最强阵容

5780: 最强阵容 时间限制: 1 Sec  内存限制: 128 MB提交: 206  解决: 54[提交][状态][讨论版][命题人:admin] 题目描述 拿着新换来的英雄卡,小李满心欢喜的准备和同学们PK一下.他们的游戏规则非常简单,双方把自己的牌绕成一圈,然后指定一个起点,从该张牌开始顺时针方向往后取,谁取出的字符串字典序更小(从左到右开始比较,碰到第一个不一样的字符进行比较,比较规则为a<b<-<z)谁将获得胜利.具体规则可参考样例.虽然现在小李的牌已经很好了,但是你能不能帮

《云梦四时歌》阵容推荐:最强平民阵容搭配攻略

前面为<云梦四时歌>手游的萌新玩家分享了最基本的阵容搭配套路,那么对于已经在游戏中上手的平民玩家而言,云梦四时歌阵容要怎么搭配好呢?什么样的阵容最强呢?阵容可以根据不同的时期选择不同的搭配方法,红手指小编这里有四个非常厉害的阵容,包括平民战神流阵容.双拉一波流等,下面红手机就详细为大家分享这款游戏中最好用的几种阵容,和这些阵容的替换阵容.搭配思路以及实战演示,大家可以根据自身情况选择搭配阵容. 云梦四时歌阵容推荐 平民战神流 符灵组合 英招.牛魔獓因.山鬼.海东青.日游巡 替换阵容 氐-海东青

蒟蒻ACMer回忆录 &#183; 一段弱校ACM的奋斗史

三年半的ACM生涯终于迎来了终点,退役之时,感慨万分,故写此文以纪念逝去的时光,那些为ACM拼搏的日子,那段弱校ACM的奋斗史. 三年半的ACM生涯,窝见证了CUMT从打铁到铜牌的突破,又见证了从铜牌到银牌的突破:见证了集训队员从3人发展到10余人,又见证了ACM实验室的落实. 三年半的ACM生涯,窝经历了太多,有Accepted时的欢笑,有Wrong Answer时的沮丧,有Time Limit Exceeded时的无奈,有Runtime Error时的尴尬,有打铁的失落,有拿牌的惊喜. 13

和的时候一样,没有人可以赢我两次

天团!看你们的了!事实证明,四个战队的教练团合体之后,也不是不可战胜的我说过很多次了,的队伍选人太死板了!我早就说过机器人金克斯可以用,但全都喷我,现在他们太"今天要加油啊!!!! 果然教练分析的不错.必须- 第二把,上,讲道理,就算真的最后都输了,还是感动,终于不怂了!这次就是要跟刚正面!输赢我讲道理不管打谁--要赢兮夜就必须得站出来恭喜,两个字牛,瞬间以为大舅子和小狗的风格很像,不怂就是干,我狗皮肤?的伤害!厉害厉害世界毕竟还是赢了看到最后和米勒哭了真的心酸 这几年真的不容易 今年本土加油吧

生活笑点(一)

洋葱新闻:好,一对狗男女! 因为某些不可调和的因素,洋葱新闻栏目即日起停止更新,感谢大家两年多来几百期的陪伴,缘尽至此,各自保重! ———————— 本来,上面这段文字是今天愚人节的唯一内容,后来我还是怂了,虽然我从来不是个严肃的人,但是有些玩笑真的是开不起.因为这个世界上大部分人还是活的很认真的. ———————— 大概是物以类聚人以群分吧,洋葱身边很多开起玩笑没有边儿的人. 当年老王跟娟儿去医院看耳鼻科,路过妇产科的时候,娟儿把老王手一甩梨花带雨地喊“不要,孩子我不要打掉!” ———————

安卓开发必须收藏的网站

Bookmarks 干货链接 Android源码下载 cleopard的资源 - 下载频道 - CSDN.NET 2014年下载频道人气资源大集合,免积分!-CSDN论坛-CSDN.NET-中国最大的IT技术社区 新鲜干货来了 2015年1.2.3.4.5月最热下载资源大集合-CSDN论坛-CSDN.NET-中国最大的IT技术社区 新鲜干货来袭 2015年5月最热资源大集合-CSDN论坛-CSDN.NET-中国最大的IT技术社区 2015年6月下载频道最热资源汇总-CSDN论坛-CSDN.NET

Project Management: 软件项目估算与计划不是一般的难!

摘要:估算.计划.计划跟踪是项目管理的主要工作,难度之高超乎你想象!光靠学习项目管理理论难以管好项目,而往往真能管好项目的都是那些在具体项目中滚打出来的实干人士.本文将会让你全面学习项目估算.计划.计划跟踪的知识,体验实际项目管理的难度,学到提高项目管理水平的一些方法. 大纲:1.从建筑工程说起2.估算要估啥?3.估算如何做出来?4.计划有什么内容?5.计划是如何做出来的?6.如何跟踪计划?7.优秀项目经理是怎样炼成的? 特别声明:如需转载此文,请给出指向本网站的连接,如下:作者:张传波摘自:h

橙色预警:索引空间泄露导致业务中断

写在案例分享前 承蒙大家的喜爱,我们会一直做下去! 也希望喜欢技术人生系列的朋友们,顺手帮转发一下,您的转发是我们持续分享的动力. 记得端午节和兄弟们喝酒时,有朋友说,"要不,你们成立一个用户组吧,这样更多的朋友可以以一个公益的形式加入到分享的队伍中,也可以从线上分享发展到线下分享,并且可以到各个城市中去做实战分享,让大家可以面对面的交流"; 说的有道理,于是乎,有了CESOUG,即China Experience Sharing Oracle User Group,中文名为中国经验分

呜佬儡倥橇xh3862260af1c4mnkqm

史莱克城乃是史莱克学院的领地,也是史莱克学院的根本,刚才发生的情况太过离奇,确实需要有人去主持大局.梦红尘嗔道:"小家伙,你看清楚了.我哥哥今年才十四岁,还不到十五岁呢.可不是什么大哥."穆老淡淡的道:"交流学习可以.但你能够保证我的学员安全吗?还有,我们史莱克的弟子到达贵学院,又能够学到些什么?""两敏攻.一强攻.又是这样的配制,真没劲.怎么搞?"王冬在霍雨浩耳边低声说道."一百年?你确定?"考核老师以为自己听错了,能够代表