SGU 142 Keyword(水~)
来源:互联网 发布:明阳智慧能源知乎 编辑:程序博客网 时间:2024/05/17 08:21
Description
给出一个只由a和b组成的长度为n的字符串,求没在这个字符串的子串中出现的最短的由a和b组成的串
Input
第一行一个正整数n表示串长,第二行一个字符串(1<=n<=500000)
Output
输出没在该串的子串集中出现过的最短的串
Sample Input
11
aabaaabbbab
Sample Output
4
aaaa
Solution
将a和b看作01,长度不大于m的由a和b组成的串有2^m-1种,而一个长度为n的串至多有n-m+1个长度为m的子串,故m最多不超过20,将一个串看作一个整数的二进制表示(a表示0,b表示1),那么只需要开一个2^20的数组标记输入的串中长度不超过20的子串即可
Code
#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define maxn 555555int n,ans[22],flag[1<<21],res;char s[maxn];int main(){ memset(flag,0,sizeof(flag)); scanf("%d%s",&n,s); for(int i=0;i<n;i++) { int temp=1; for(int j=i;j<i+20&&j<n;j++) { temp=2*temp+s[j]-'a'; flag[temp]=1; } } for(int i=2;i<1<<20;i++) if(!flag[i]) { res=0; while(i) { ans[res++]=i&1; i>>=1; } printf("%d\n",res-1); for(int j=res-2;j>=0;j--)printf("%c",ans[j]+'a'); break; } return 0;}
0 0
- SGU 142 Keyword(水~)
- sgu 142 Keyword
- sgu 142Keyword 枚举
- SGU 142. Keyword(暴力枚举)
- SGU 115 Calendar(水~)
- SGU 133 Border(水~)
- SGU 144 Meeting(水~)
- keyword
- SGU - 127 - Telephone directory (水~)
- SGU - 403 - Scientific Problem (水)
- SGU 100 A+B(水~)
- SGU 114 Telecasting station(水~)
- SGU 123 The sum(水~)
- SGU 127 Telephone directory(水~)
- SGU 146 The Runner(水~)
- SGU 152 Making round(水~)
- SGU 142 (字符串hash)
- sgu 142解题记录
- 模拟实现strcat函数
- CodeForces 235C Cyclical Quest 后缀自动机
- linux编程之pipe()函数
- 自定義控件
- redis配置说明
- SGU 142 Keyword(水~)
- 错误日记 quartz No Session found for current thread
- Scalaz(39)- Free :a real monadic program
- Linux与几种电脑系统的区别
- 【Unity闲谈】关于制作 Voxel(体素,3D像素)模型并导入Unity
- 打造H5动感影集的爱恨情仇(动画性能篇)
- C++ primer plus第六版课后编程练习答案:6.4
- 密码学
- 使用RecyclerView实现多样的View