[COGS 2688]鱼的感恩

[COGS 2688]鱼的感恩

题目

从前有一个渔夫抓到了一条特别的鱼,放走了。

渔夫再次抓到了这条鱼,正要再次放走之时,这条鱼吐出了一片迷雾,迷雾散去以后,渔夫不见了。

渔夫睁开眼,发现自己到了一个石碑面前,碑上有一行小写英文字符串S,下面写着:“汝等既有护生之念,应是善良之人,理当授以嘉奖。但是为了证明你的善良,你需要展现你的智慧,以确保吾所见之善良,并非出于汝之愚笨。上面的字符串,你若于其中找到最长的子串,使得这个子串既出现在前缀,又出现在后缀,还出现在字符串的中间,也就是既非前缀又非后缀的位置,则该石碑会将其所藏之物拱手相送。”

渔夫听完以后,可谓一脸懵逼,遂将这个问题分享给你,希望你能够解决。若能解决,渔夫愿意拿出10,000,000,000,000 mod 250 元,作为解决这个问题的报酬。

INPUT

第一行是一个数字q,表示这个问题有q组不同问题。

接下来q行每行一个由小写英文字母组成的字符串S,意义见于上文。

OUTPUT

输出共q行,每行一个字符串,表示对于每组问题,所求的字符串,如果不存在长度大于0且满足要求的字符串,就改成输出”---”(不包含引号)

SAMPLE

INPUT

1

niconiconi

OUTPUT

ni

解题报告

考试时打了个纯暴力,竟然骗了70= =

正解1:

kmp乱搞,求一下next数组,记录在1~n-1哪些next出现过,在n一直跳next,直到出现过即是答案(话说这是标算吧啊喂)

正解2:

hash乱搞(这才是真正的乱搞吧啊喂),先用p进制搞出整个的hash值,然后从后往前枚举终点,然后用这个前缀去匹配

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cstdio>
 4 #include<vector>
 5 using namespace std;
 6 typedef unsigned long long L;
 7 const int p=233;
 8 char s[100005];
 9 L xp[100005],h[100005];
10 int len;
11 vector<int>po;
12 inline bool judge(int pos){
13     if(s[len-1]!=s[pos-1])
14         return false;
15     L cmp_has(h[0]-h[pos]*xp[pos]),pre_has(h[len-pos]);
16     if(cmp_has!=pre_has)
17         return false;
18     for(int i=0;i<po.size();i++){
19         int tp(po[i]);
20         if(tp+pos>=len)
21             return false;
22         L mid_has(h[tp]-h[tp+pos]*xp[pos]);
23         if(mid_has==cmp_has)
24             return true;
25     }
26     return false;
27 }
28 int main(){
29     freopen("fool.in","r",stdin);
30     freopen("fool.out","w",stdout);
31     int n;
32     scanf("%d",&n);
33     while(n--){
34         memset(h,0,sizeof(h));
35         scanf("%s",s);
36         len=strlen(s);
37         xp[0]=1;
38         for(int i=1;i<=len;i++)
39             xp[i]=xp[i-1]*p;
40         po.clear();
41         for(int i=1;i<len;i++)
42             if(s[i]==s[0])
43                 po.push_back(i);
44         for(int i=len-1;i>=0;i--)
45             h[i]=h[i+1]*p+s[i]-‘a‘;
46         int tmp(0);
47         for(int i=len-2;i>=0;i--){
48             if(judge(i)){
49                 tmp=i;
50                 break;
51             }
52         }
53         if(!tmp)
54             puts("---");
55         else{
56             for(int i=0;i<tmp;i++)
57                 putchar(s[i]);
58             putchar(‘\n‘);
59         }
60     }
61 }

时间: 2024-09-15 13:33:27

[COGS 2688]鱼的感恩的相关文章

8.7联考题解

前两题很水啊--没必要开三篇了就扔到一篇里去了.改水题异常艰难,代码量很小然而我又被什么奇怪的东西绊住了. Passward 时间限制: 1 Sec  内存限制: 512 MB 题目描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s 的后缀并且还在 s 的中间位置出现过一次. 如果存在这样的串,请你输出这个串,如有多个满足条件的串,输出最长的那一个. 如果不存在这样的串,输出"Just a legen

COGS基本法初稿

COGS基本法 序言 我们COGS人民,为建立更完善的联盟,树立正义,保障网络安宁,提供公共OJ,杜绝极少数恐怖分子对我OJ的破坏行为,并使我们自己和OIER得享自由的幸福,特为COGS制定本基本法. 第一条权利机构 权利机构由老常为领导核心的第一代领导集体及COGS QQ群的元老组成,COGS的权力机构为君主立宪制,其中老常为世袭君主,议会由首相刘易铖,长老王梦迪,内阁大臣张灵犀,外交大臣张子昂.国家工程师李冬麟组成.首相.内阁大臣.外交大臣必须由河南省实验中学有着良好素质和学习水平的学生组成

短视频行业竞争加码 开发者点赞趣拍云感恩钜惠活动

一.短视频成为新的创业风口 2016年,短视频超过了图文和组图,成为了今日头条最大的内容形态,日均播放次数超过了10亿次.继第二届头条号创作者大会上宣布对短视频作者投入10亿人民币,今日头条宣布已完成了对移动视频创作者平台Flipagram的全资收购,意味着今日头条正式拿到了全球短视频市场的入场票. 短视频将会是未来非常重要的一个风口.4G-5G时代,流量费用大幅度降低,用手机看视频已经成为新常态.相比图文内容的维度单调,视频本身即是一个立体且更具"IP化"的媒介样态:短视频利用自身可

COGS——T 2739. 凯伦和咖啡

http://www.cogs.pro/cogs/problem/problem.php?pid=2739 ★★☆   输入文件:coffee.in   输出文件:coffee.out   简单对比时间限制:1 s   内存限制:512 MB [题目描述] 为了在上课时保持清醒,凯伦需要一些咖啡.咖啡爱好者凯伦想知道最佳的温度来冲煮完美的咖啡.因此,她花了一些时间阅读几本食谱,其中包括广受好评的“咖啡的艺术”. 她知道有n个食谱,其中第i个食谱建议应当在li和ri度之间冲煮以达到最佳的味道.凯伦

COGS——T 8. 备用交换机

http://www.cogs.pro/cogs/problem/problem.php?pid=8 ★★   输入文件:gd.in   输出文件:gd.out   简单对比时间限制:1 s   内存限制:128 MB [问题描述] n个城市之间有通讯网络,每个城市都有通讯交换机,直接或间接与其它城市连接.因电子设备容易损坏,需给通讯点配备备用交换机.但备用交换机数量有限,不能全部配备,只能给部分重要城市配置.于是规定:如果某个城市由于交换机损坏,不仅本城市通讯中断,还造成其它城市通讯中断,则配

COGS——C2098. Asm.Def的病毒

http://www.cogs.pro/cogs/problem/problem.php?pid=2098 ★☆   输入文件:asm_virus.in   输出文件:asm_virus.out   简单对比时间限制:1 s   内存限制:256 MB [题目描述] “这就是我们最新研制的,世界上第一种可持久化动态计算机病毒,‘创世纪’.”方教授介绍道. “哦.”主席面无表情地点点头. “‘创世纪’无法真正杀死透明计算网络,但是可以把它变成傻子.可惜透明计算网络能轻松地辨认出病毒,所以我建议……

感恩生命_感恩生活

感恩生命 我并不觉得,睡在天鹅绒华丽温床上的皇帝,作的梦会比风雨缠身露宿街头的乞丐做的更为安稳甜蜜.我也并不觉得,你过得比我多姿,比我有势,比我闲逸,比我温饱,日子就真的来得比我稳妥而生香. 你看,广厦万栋,也不过夜眠七尺:良田千顷,亦无非一日三餐.我们总不能为一些相差甚远的比较就对上帝失却公平仁爱的信心,也总不能因飞花溅泪.殇如裂帛就从此对人世深深不忿沉怒扬刀. 世界可谓是没有错的,错的只是我们内心的承载能力和韧性,错的只是我们欲求太多而不识自足.你不能免疫浪汹潮涌的伤害,不能淡看人世无情的屠

十日均线炒股法与鱼身理论

原作者地址 http://blog.163.com/zpz_ok/blog/static/17348427020101083371181/ 担心掉了,copy过来. 十日均线炒股法与鱼身理论:读到这里,一定会有人问:如果按十日均线炒股法,非要等到股价涨到十日均线上才买,往往已经损失了从最低价上来的一段盈利:再跌破十日均线后才卖,又损失了从最高价下来这一段盈利,这样操作是不是太死板了? 我会反问:你在吃鱼的时候是先吃鱼身还是先吃鱼头鱼尾?恐怕大多数人会回答:肯定是先吃鱼身了.我的回答也一样:当然是

TYVJ P1736 创意吃鱼法 Label:dp || 前缀和

题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1表示对应位置有鱼)有助于决定吃鱼策略. 在代表池子的01矩阵中,有很多的正方形子矩阵,如果某个正方形子矩阵的某条对角线上都有鱼,且此正方形子矩阵的其他地方无鱼,猫猫就可以从这个正方形子矩阵“对角线的一端”下口,只一吸,就能把对角线上的那一队鲜鱼吸入口中. 猫猫是个贪婪的家伙,所以她想一口吃掉尽量多的