Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring
https://www.cnblogs.com/violet-acmer/p/10163375.html
题意:
给出串是多态的定义“长度为 n 的串 s ,当串 s 中所有字母出现的次数严格 ≤ n/2,就称此串是多态的”。
求某串 s 是否含有多态的字串,如果含有,输出"YES",并输出此串,反之,输出"NO"。
题解:
开局连 wa 五发,读错题意了,难受。
比赛时提交的代码是暴力过的,就是判断长度为 len 的字串是否为多态串,枚举所有可能。
用了树状数组稍加优化了一番,代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=1e3+; int n;
char s[maxn];
//'a' <- 0,'b' <- 1,依次类推
//bit[i][j] : 前j个字符字母i出现的次数
int bit[][maxn];
void Add(int t,int i)
{
while(t <= n)
{
bit[i][t]++;
t += (t&-t);
}
}
int Sum(int t,int i)
{
int res=;
while(t > )
{
res += bit[i][t];
t -= (t&-t);
}
return res;
}
bool isSat(int a,int b)
{
for(int i=;i < ;++i)
if(Sum(b,i)-Sum(a-,i) > ((b-a+)>>))
return false;
return true;
}
void Solve()
{
mem(bit,);
for(int i=;i <= n;++i)
Add(i,s[i]-'a');
for(int len=;len <= n;++len)
{
for(int i=;i+len- <= n;++i)
{
int j=i+len-;
if(isSat(i,j))
{
printf("YES\n");
for(int k=i;k <= j;++k)
printf("%c",s[k]);
printf("\n");
return ;
}
}
}
printf("NO\n");
}
int main()
{
scanf("%d%s",&n,s+);
Solve();
return ;
}
然后,今天整理这道题的时候,突然想到,如果含有两个连续的不同字符,那这个子串肯定是多态的啊,so,写了个短短的代码。
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
const int maxn=1e3+; int n;
char s[maxn]; void Solve()
{
for(int i=;i <= n;++i)
{
if(s[i] != s[i-])
{
printf("YES\n");
printf("%c%c\n",s[i-],s[i]);
return ;
}
}
printf("NO\n");
}
int main()
{
scanf("%d%s",&n,s+);
Solve();
return ;
}
Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring的更多相关文章
- Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
- Educational Codeforces Round 53 (Rated for Div. 2)
http://codeforces.com/contest/1073 A. Diverse Substring #include <bits/stdc++.h> using namespa ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum (数位dp求和)
题目链接:https://codeforces.com/contest/1073/problem/E 题目大意:给定一个区间[l,r],需要求出区间[l,r]内符合数位上的不同数字个数不超过k个的数的 ...
- [codeforces][Educational Codeforces Round 53 (Rated for Div. 2)D. Berland Fair]
http://codeforces.com/problemset/problem/1073/D 题目大意:有n个物品(n<2e5)围成一个圈,你有t(t<1e18)元,每次经过物品i,如果 ...
- Educational Codeforces Round 53 (Rated for Div. 2) E. Segment Sum
https://codeforces.com/contest/1073/problem/E 题意 求出l到r之间的符合要求的数之和,结果取模998244353 要求:组成数的数位所用的数字种类不超过k ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot 【二分 + 尺取】
任意门:http://codeforces.com/contest/1073/problem/C C. Vasya and Robot time limit per test 1 second mem ...
- Educational Codeforces Round 53 (Rated for Div. 2)G. Yet Another LCP Problem
题意:给串s,每次询问k个数a,l个数b,问a和b作为后缀的lcp的综合 题解:和bzoj3879类似,反向sam日神仙...lcp就是fail树上的lca.把点抠出来建虚树,然后在上面dp即可.(感 ...
- Educational Codeforces Round 53 (Rated for Div. 2) D. Berland Fair
题意:一个人 有T块钱 有一圈商店 分别出售 不同价格的东西 每次经过商店只能买一个 并且如果钱够就必须买 这个人一定是从1号店开始的!(比赛的时候读错了题,以为随意起点...)问可以买多少个 ...
- Educational Codeforces Round 53 (Rated for Div. 2) C. Vasya and Robot
题意:给出一段操作序列 和目的地 问修改(只可以更改 不可以删除或添加)该序列使得最后到达终点时 所进行的修改代价最小是多少 其中代价的定义是 终点序号-起点序号-1 思路:因为代价是终点序号减去 ...
随机推荐
- Google浏览器解决编码乱码问题
新版google浏览器编码乱码没有设置的入口,怎么办呢?. 步骤一: 可以下载goole的插件,名为charset,下载后的文件名为Charset_v0.4.1 步骤二: google右上角-> ...
- tornado.gen.coroutine-协程
http://blog.csdn.net/seeground/article/details/49488281
- Bootstrap之信息记录
Bootstrap中文网: http://www.bootcss.com/ 上面有一些资料和范例 实例精选: https://v3.bootcss.com/getting-started/#examp ...
- 深度学习 weight initialization
转自: https://www.leiphone.com/news/201703/3qMp45aQtbxTdzmK.htmla https://blog.csdn.net/shuzfan/articl ...
- 后台web端的react
在api.js里,存放着各种功能引用的方法,比如这个fakeRegister,里面传参数params,返回要要调回的地址,${HOST1}/user/register requset会返回codeme ...
- 官网下载旧版本jdk,老版本jdk,jdk1.7,jdk1.8
1.进入中文oracle官网(不是国内官网下载速度超级慢): http://www.oracle.com/technetwork/cn/indexes/downloads/index.html 2.进 ...
- JAVA js WEB 疑难点总结
1.获取combox的Value 和 Text $('#id').combobox('getValue').$('#id').combobox('getText'): 2.ajax 直接访问ht ...
- John the Ripper-弱口令检测
简介 John the Ripper免费的开源软件,是一个快速的密码破解工具,用于在已知密文的情况下尝试破解出明文的破解密码软件,支持目前大多数的加密算法,如DES.MD4.MD5等.它支持多种不同类 ...
- Codeforces Round #443 Div. 1
A:考虑每一位的改变情况,分为强制变为1.强制变为0.不变.反转四种,得到这个之后and一发or一发xor一发就行了. #include<iostream> #include<cst ...
- Tarjan求强连通分量,缩点,割点
Tarjan算法是由美国著名计算机专家发明的,其主要特点就是可以求强连通分量和缩点·割点. 而强联通分量便是在一个图中如果有一个子图,且这个子图中所有的点都可以相互到达,这个子图便是一个强连通分量,并 ...