CSU2188: Substring
2024-08-27 12:24:07
Description
FST 是一名可怜的 ACMer,他很强,但是经常 fst,所以 rating 一直低迷。 但是重点在于,他真的很强!他发明了一种奇特的加密方式,这种加密方式只有 ACMer 才能破解。 这种加密方式是这样的:对于一个 01 串,他会构造另一个 01 串,使得原串是在新串 中没有出现过的最短的串。 现在 FST 已经加密好了一个串,但是他的加密方式有些 BUG,导致没出现过的最短的 串不止一个,他感觉非常懊恼,所以他希望计算出没出现过的最短的串的长度。
Input
单组数据 一行,一个 01 串,字符串串长小于等于10^ 5
Output
一行,一个正整数,表示没有出现过的最短串的长度
Sample Input
100010110011101
Sample Output
4 题意:在一个很长的串内找到一个没有出现过最短的子串,由于串比较长,所以我们不能直接对于字符串进行处理。我们可以换一个思想,从答案的长度入手,每次枚举答案的长度,然后把这个很长的子串拆分很多这个长度的子串,
放到set当中存储,利用set的去重,如果最后的set的size()<2^(ans)也就是小于我们枚举长度能产生所有的可能的串的数量,那么就说明当中肯定有一个串没有出现过。
就可以得到答案。 这题也可以用字符串hash去做,时间复杂度会比set+string的要小些。但是思想是一样的。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <set>
using namespace std; string s;
set<string>ss;
int main()
{
cin>>s;
int len=s.length();
string temp="";
int ans=1;
while(1)
{
ss.clear();
for(int i=0;i<=len-ans;i++)
{
// cout<<i<<endl;
for(int j=i;j<i+ans;j++)
{
temp+=s[j];
}
// cout<<temp<<endl;
ss.insert(temp);
temp="";
}
// cout<<ss.size()<<endl;
if(ss.size()<pow(2,ans))
break;
else
ans++;
}
printf("%d\n",ans);
return 0;
} /**********************************************************************
Problem: 2188
User: therang
Language: C++
Result: AC
Time:540 ms
Memory:3580 kb
**********************************************************************/
最新文章
- (转)CNBLOG离线Blog发布方法
- 获取图片中感兴趣区域的信息(Matlab实现)
- C#6.0特性(快来围观)
- Javascript刷新页面大全
- Codeforces Round #217 (Div. 2) c题
- Linux busybox mount -a fstab
- html input readonly 和 disable的区别
- MyBatis(3.2.3) - Configuring MyBatis using XML, Properties
- JS 打印报表
- 在ssh框架中注解方式需要注意的几个问题
- 获取WebView加载HTML时网页中的内容
- C#中的Virtual
- Servlet 过滤器、拦截器、监听器以及文件上传下载
- 新概念英语(1-95)Tickets,please!
- UE4成批处理透明材质
- Linux 遭入侵,挖矿进程被隐藏排查记录
- springboot(十八):CORS方式实现跨域
- Phpstorm 与 服务器 同步 代码
- Flask-Restful详解
- Alpha冲刺——事后诸葛亮
热门文章
- java.lang.NoSuchMethodError: org.springframework.web.context.support.XmlWebApplicationContext.getEnv
- HDU3853:LOOPS(概率DP)
- 题解报告:hdu 1235 统计同成绩学生人数
- laravel 学习
- chart.js图表 传值问题
- 电商网站项目Angular+Bootstrap+Node+Express+Mysql
- Win10 1803更新UWP无法安装的解决办法|错误代码0x80073D0D
- mysql 字段包含某个字符的函数
- 在Bootstrap中得模态框(modal)中下拉不能显示得问题
- 对openjdk的javac编译器扩展了一个语法糖