Codeforces Round #621 (Div. 1 + Div. 2) C. Cow and Message
Bessie the cow has just intercepted a text that Farmer John sent to Burger Queen! However, Bessie is sure that there is a secret message hidden inside.
The text is a string ss of lowercase Latin letters. She considers a string tt as hidden in string ss if tt exists as a subsequence of ss whose indices form an arithmetic progression. For example, the string aab is hidden in string aaabb because it occurs at indices 11 , 33 , and 55 , which form an arithmetic progression with a common difference of 22 . Bessie thinks that any hidden string that occurs the most times is the secret message. Two occurrences of a subsequence of SS are distinct if the sets of indices are different. Help her find the number of occurrences of the secret message!
For example, in the string aaabb, a is hidden 33 times, b is hidden 22 times, ab is hidden 66 times, aa is hidden 33 times, bb is hidden 11 time, aab is hidden 22 times, aaa is hidden 11 time, abb is hidden 11 time, aaab is hidden 11 time, aabb is hidden 11 time, and aaabb is hidden 11 time. The number of occurrences of the secret message is 66 .
Input
The first line contains a string ss of lowercase Latin letters (1≤|s|≤1051≤|s|≤105 ) — the text that Bessie intercepted.
Output
Output a single integer — the number of occurrences of the secret message.
Examples
aaabb
6
usaco
1
lol
2
Note
In the first example, these are all the hidden strings and their indice sets:
- a occurs at (1)(1) , (2)(2) , (3)(3)
- b occurs at (4)(4) , (5)(5)
- ab occurs at (1,4)(1,4) , (1,5)(1,5) , (2,4)(2,4) , (2,5)(2,5) , (3,4)(3,4) , (3,5)(3,5)
- aa occurs at (1,2)(1,2) , (1,3)(1,3) , (2,3)(2,3)
- bb occurs at (4,5)(4,5)
- aab occurs at (1,3,5)(1,3,5) , (2,3,4)(2,3,4)
- aaa occurs at (1,2,3)(1,2,3)
- abb occurs at (3,4,5)(3,4,5)
- aaab occurs at (1,2,3,4)(1,2,3,4)
- aabb occurs at (2,3,4,5)(2,3,4,5)
- aaabb occurs at (1,2,3,4,5)(1,2,3,4,5)
Note that all the sets of indices are arithmetic progressions.
In the second example, no hidden string occurs more than once.
In the third example, the hidden string is the letter l.
大意是给定一个字符串,让你找出所有下标成等差数列的子串里出现次数最多的出现了多少次。
看了别人的博客才勉强搞懂-_- 首先要说的就是一个字母也算是n=1的等差数列。然后我们可以发现,n=1,2,3...当n>=3以后,形成等差数列的条件越强,一个n=3的等差数列可以拆分成三个n等于2的等差数列,因此我们可以直接忽略掉n>=3时的情况。n=1时,直接开一个数组single[26]统计每个字母出现的次数。n=2时会麻烦一点,这里使用一个二维数组cnt[26][26]统计,其含义为:cnt[i][j]代表字母对('a'+i, 'a'+j)出现的次数,一定注意顺序!然后扫一遍字符串,第一维获取当前字母,然后再写一个0~26的二重循环,更新a~z与当前字母组成的字母对的个数,注意当前字母是第二个。更新的核心操作是cnt[j][s[i]-'a']+=single[j] (i是第一维循环变量,j是第二维循环变量),直接加上j对应的字母之前出现的次数即可。
别忘开long long!!
#include <bits/stdc++.h>
using namespace std;
string s;
long long cnt[][]={};
int single[]={};
long long mmax(long long a, long long b)
{
return a>b?a:b;
}
int main()
{
cin>>s;
int i,j;
if(s.size()==)
{
cout<<;
return ;
}
long long ans=;
for(i=;i<s.size();i++)
{
for(j=;j<;j++)
{
cnt[j][s[i]-'a']+=single[j];
ans=mmax(ans,cnt[j][s[i]-'a']);
}
single[s[i]-'a']++;//更新n=1情况时一定要放在后面,要不然的话会被第二重循环统计到当前的字母
ans=mmax(ans,single[s[i]-'a']);
}
cout<<ans;
return ;
}
Codeforces Round #621 (Div. 1 + Div. 2) C. Cow and Message的更多相关文章
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
- Educational Codeforces Round 43 (Rated for Div. 2)
Educational Codeforces Round 43 (Rated for Div. 2) https://codeforces.com/contest/976 A #include< ...
- Educational Codeforces Round 35 (Rated for Div. 2)
Educational Codeforces Round 35 (Rated for Div. 2) https://codeforces.com/contest/911 A 模拟 #include& ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) F. Isomorphic Strings 题目连接: http://cod ...
- Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes
Codeforces Educational Codeforces Round 44 (Rated for Div. 2) E. Pencils and Boxes 题目连接: http://code ...
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- Educational Codeforces Round 39 (Rated for Div. 2) G
Educational Codeforces Round 39 (Rated for Div. 2) G 题意: 给一个序列\(a_i(1 <= a_i <= 10^{9}),2 < ...
- Educational Codeforces Round 48 (Rated for Div. 2) CD题解
Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...
- Educational Codeforces Round 60 (Rated for Div. 2) 题解
Educational Codeforces Round 60 (Rated for Div. 2) 题目链接:https://codeforces.com/contest/1117 A. Best ...
随机推荐
- redis5.0.7安装及配置集群
1.安装环境linux系统,时间2020年2月 2.官网下载https://redis.io/ 3.解压 tar -zxvf redis-5.0.7.tar.gz 4.配置文件 //创建etc文件夹, ...
- Vue的响应式原理---(v-model中的双向绑定原理)
Vue响应式原理 不要认为数据发生改变,界面跟着更新是理所当然. 具体代码实现:https://gitee.com/ahaMOMO/Vue-Responsive-Principle.git 看下图: ...
- c++对象的内存模式
#include <iostream> using namespace std; class Obj { private: int* a; public: int* ga() { retu ...
- 用Python开发实用程序 – 计算器
一段时间前,自己制作了一个库 “sui-math”.这其实是math的翻版.做完后,python既然可以轻易的完成任何的数学计算,何不用python开发一个小程序专门用以计算呢? 现在我们越来越依赖于 ...
- 【做题笔记】P2871 [USACO07DEC]手链Charm Bracelet
就是 01 背包.大意:给您 \(T\) 个空间大小的限制,有 \(M\) 个物品,第 \(i\) 件物品的重量为 \(c_i\) ,价值为 \(w_i\) .要求挑选一些物品,使得总空间不超过 \( ...
- 网站调用qq第三方登录
1. 准备工作 (1) 接入QQ登录前,网站需首先进行申请,获得对应的appid与appkey,以保证后续流程中可正确对网站与用户进行验证与授权. ① 注册QQ互联开发者账号 网址 https:/ ...
- 微信小程序 - height: calc(xx - xx);无效
遇到一个小问题,记录一下 问题:在微信小程序中使用scroll-view标签时,用height:cale(xx - xx)设置高度无效,在page中设置高度为百分百依旧无效 解决办法:直接在父级vie ...
- 第二十三篇 玩转数据结构——栈(Stack)
1.. 栈的特点: 栈也是一种线性结构: 相比数组,栈所对应的操作是数组的子集: 栈只能从一端添加元素,也只能从这一端取出元素,这一端通常称之为"栈顶": 向栈中添加元 ...
- python中使用graphviz环境配置
去官网下载graphviz,并下一步安装 配置graphviz的bin目录到path环境变量下 python相关包: 使用conda注意:conda install graphviz 可能没用,要使用 ...
- bbs系统的相关知识点
1.注册功能 1.注册功能往往都会由很多校验性的需求 所以这里我们用到了forms组件 项目中可能有多个地方需要用到不同的forms组件 为了解耦合 但是创建一个py文件 专门用来存放项目用到的所有的 ...