题目链接:点击查看

题目大意:给出一个字符串,在这个题目中的子序列定义为,出现次数必须是等差数列的序列,如: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(思维)相关推荐

  1. Codeforces 1077B Disturbed People(思维题)

    Codeforces 1077B Disturbed People(思维题) There is a house with nn flats situated on the main street of ...

  2. [codeforces 1304A] Cow and Haybales 阴沟里翻船

    Codeforces Round #621 (Div. 1 + Div. 2) [codeforces 1304A] Cow and Haybales   阴沟里翻船 总目录详见https://blo ...

  3. CodeForces - 1307D Cow and Fields(最短路+思维)

    题目链接:点击查看 题目大意:给出一个由 n 个点和 m 条边组成的无向图,其中有 k 个点被标记了,题目要求选出两个被标记的点,连接一条边,使得从点 1 到点 n 的最短路最大 题目分析:读完题后, ...

  4. CodeForces - 1307B Cow and Friend(数学+思维)

    题目链接:点击查看 题目大意:在二维平面上,要求从点 ( 0 , 0 ) 到点 ( x , 0 ) 处,每次只能行走给出的路径长度,问最少需要走几次才能到 题目分析:读完题后首先想到的是三角形,如果想 ...

  5. CodeForces - 160D Edges in MST(思维+tarjan/树链剖分+线段树)

    题目链接:点击查看 题目大意:给出一张 n 个点 m 条边组成的带权无向图,现在对于每条边来说,确定一下其分类: 一定是最小生成树上的边 可能是最小生成树上的边 一定不是最小生成树的边 题目分析:两种 ...

  6. Codeforces 846 A Curriculum Vitae 思维 暴力

    题目链接: http://codeforces.com/contest/846/problem/A 题目描述: 给你一个串, 你可以做删除操作, 要求结果串0不能在1的右边, 问最多可以剩几个数字 解 ...

  7. Codeforces 861 B Which floor? 思维

    题目链接: http://codeforces.com/contest/861/problem/B 题目描述: 每个楼梯上有相同数量的数, 都是从1开始, 给你m个不矛盾的信息, 问你能不能判断n在第 ...

  8. CodeForces - 1494E A-Z Graph(构造+思维)

    题目链接:https://vjudge.net/problem/CodeForces-1494E 题目大意:给出一个初始时只有 nnn 个点的有向带权图,需要执行 mmm 次操作,每次操作分为下列三种 ...

  9. CodeForces - 1504C Balance the Bits(思维+构造)

    题目链接:https://vjudge.net/problem/CodeForces-1504C 题目大意:给出一个长度为 nnn 的 010101 串,现在要求构造出两个长度为 nnn 的合法括号序 ...

最新文章

  1. 查看服务器CPU配置信息,转帖-CentOS查看CPU信息、位数、多核信息;查看服务器硬件信息...
  2. Test on 11/14/2016
  3. 洛谷 P3157 [CQOI2011]动态逆序对 | CDQ分治
  4. php7-sapnwrfc
  5. python进阶之多进程
  6. 汇编语言——《子程序应用(数制转换)程序设计》实验报告
  7. 访问Access数据库需要注意的问题
  8. mysql判断表存在的sql语句_SQL 语句判断已知表是否存在_MySQL
  9. delphi bmp绘制矢量文件效率慢_聊一聊矢量瓦片的常识
  10. 计算机教室要配备空调吗,教室里不安装空调吗?如何正确安装空调?
  11. 机器学习项目完整案例:预测区域的房价中位数
  12. python对于设计师有什么用-如果你有设计师朋友,请对TA好一些...
  13. Mybatis-02-对数据库的基本操作
  14. 【动画消消乐 】一个小清新类型的全局网页过渡动画 075
  15. 论文排版一步搞定之公式——(公式居中,编号居右)
  16. 仙人掌之歌——大规模高速扩张(1)
  17. 【注意】这款Python快递查询小系统超级好用:不信你自己试试?
  18. ambari_HDP之mapreduce参数调优
  19. C++学习系列---读取文件名存入txt和从txt读取每行信息
  20. 【环形dp】poj 2228 Naptime

热门文章

  1. Nginx正向代理实现
  2. SpringBoot最佳实践-Lombok简化开发
  3. 分布式架构下常见序列化技术-了解序列化的发展
  4. webpack打包js文件
  5. Linux下清理内存和Cache方法 /proc/sys/vm/drop_caches
  6. 数据库-优化-Limit查询的优化
  7. list lt t gt java_将DataTable转换成Listlt;Tgt;实现思路及示例代码
  8. e480换高分屏_全高清都不够用?是时候趁着双11上飞利浦的高分屏了
  9. sed知识整理:模式空间
  10. c++随机打乱数组_NumPy数组基本介绍