CodeForces - 1307C Cow and Message(思维)
题目链接:点击查看
题目大意:给出一个字符串,在这个题目中的子序列定义为,出现次数必须是等差数列的序列,如:aaabb的其中一个子序列就是aab,其出现的位置是1 3 5,呈等差数列,现在问,在这个题目中出现次数最多的子序列,出现的次数是多少
题目分析:又是一道读完题后猜出正解,但因为实现一直WA的题目,其实读完题后,再参照样例,可以猜个差不多的结论,那就是对答案有贡献的子序列,长度不是 1 就是 2 ,因为自己举了几个例子后发现,如果存在一个长度大于 2 的子序列,那么其长度必定可以拆成长度为 1 的或者长度为 2 的,这样一来我们就发现等差数列的这个条件也就变成了烟雾弹,因为长度为 1 和长度为 2 的子序列无论如何组合,都肯定是等差数列
有了上面的猜想就不难实现了,长度为 1 的子序列就是统计一下每个字母出现的次数,取最多的那个字母就行了,而长度为二的子序列,我用了一种比较笨的方法,那就是直接暴力枚举两个字母,时间复杂度是 n * 26 * 26 ,不过也无伤大雅,枚举的这两个字母是不相同的,而相同的我们可以利用排列组合 C( mmax , 2 ) 计算得出,这里的 mmax 就是刚才求出的,出现次数最多的字母了
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;char s[N];LL cnt[N][26];//前缀和int main()
{
//#ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
//#endif
// ios::sync_with_stdio(false);scanf("%s",s+1);int len=strlen(s+1);for(int i=1;i<=len;i++){for(int j=0;j<26;j++)cnt[i][j]=cnt[i-1][j];cnt[i][s[i]-'a']++;}LL mmax=0;for(int i=0;i<26;i++)mmax=max(mmax,cnt[len][i]);mmax=max(mmax,(mmax-1)*mmax/2);for(int j=0;j<26;j++)for(int k=0;k<26;k++){if(j==k)continue;LL temp=0;for(int i=1;i<=len;i++)if(s[i]==char(k+'a'))temp+=cnt[i][j];mmax=max(mmax,temp);}printf("%lld\n",mmax);return 0;
}
CodeForces - 1307C Cow and Message(思维)相关推荐
- Codeforces 1077B Disturbed People(思维题)
Codeforces 1077B Disturbed People(思维题) There is a house with nn flats situated on the main street of ...
- [codeforces 1304A] Cow and Haybales 阴沟里翻船
Codeforces Round #621 (Div. 1 + Div. 2) [codeforces 1304A] Cow and Haybales 阴沟里翻船 总目录详见https://blo ...
- CodeForces - 1307D Cow and Fields(最短路+思维)
题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,其中有 k 个点被标记了,题目要求选出两个被标记的点,连接一条边,使得从点 1 到点 n 的最短路最大 题目分析:读完题后, ...
- CodeForces - 1307B Cow and Friend(数学+思维)
题目链接:点击查看 题目大意:在二维平面上,要求从点 ( 0 , 0 ) 到点 ( x , 0 ) 处,每次只能行走给出的路径长度,问最少需要走几次才能到 题目分析:读完题后首先想到的是三角形,如果想 ...
- CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)
题目链接:点击查看 题目大意:给出一张 n 个点 m 条边组成的带权无向图,现在对于每条边来说,确定一下其分类: 一定是最小生成树上的边 可能是最小生成树上的边 一定不是最小生成树的边 题目分析:两种 ...
- Codeforces 846 A Curriculum Vitae 思维 暴力
题目链接: http://codeforces.com/contest/846/problem/A 题目描述: 给你一个串, 你可以做删除操作, 要求结果串0不能在1的右边, 问最多可以剩几个数字 解 ...
- Codeforces 861 B Which floor? 思维
题目链接: http://codeforces.com/contest/861/problem/B 题目描述: 每个楼梯上有相同数量的数, 都是从1开始, 给你m个不矛盾的信息, 问你能不能判断n在第 ...
- CodeForces - 1494E A-Z Graph(构造+思维)
题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...
- CodeForces - 1504C Balance the Bits(思维+构造)
题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...
最新文章
- 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
- Test on 11/14/2016
- 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
- php7-sapnwrfc
- python进阶之多进程
- 汇编语言——《子程序应用(数制转换)程序设计》实验报告
- 访问Access数据库需要注意的问题
- mysql判断表存在的sql语句_SQL 语句判断已知表是否存在_MySQL
- delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识
- 计算机教室要配备空调吗,教室里不安装空调吗?如何正确安装空调?
- 机器学习项目完整案例:预测区域的房价中位数
- python对于设计师有什么用-如果你有设计师朋友,请对TA好一些...
- Mybatis-02-对数据库的基本操作
- 【动画消消乐 】一个小清新类型的全局网页过渡动画 075
- 论文排版一步搞定之公式——(公式居中,编号居右)
- 仙人掌之歌——大规模高速扩张(1)
- 【注意】这款Python快递查询小系统超级好用:不信你自己试试?
- ambari_HDP之mapreduce参数调优
- C++学习系列---读取文件名存入txt和从txt读取每行信息
- 【环形dp】poj 2228 Naptime
热门文章
- Nginx正向代理实现
- SpringBoot最佳实践-Lombok简化开发
- 分布式架构下常见序列化技术-了解序列化的发展
- webpack打包js文件
- Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
- 数据库-优化-Limit查询的优化
- list lt t gt java_将DataTable转换成Listlt;Tgt;实现思路及示例代码
- e480换高分屏_全高清都不够用?是时候趁着双11上飞利浦的高分屏了
- sed知识整理:模式空间
- c++随机打乱数组_NumPy数组基本介绍