考试 DP+平面几何+搜索?
来源:互联网 发布:网络机房搬迁方案 编辑:程序博客网 时间:2024/06/07 01:05
第二道不想改,第三道不会,第一道先放这吧;
何大爷对字符串十分有研究,于是天天出字符串题虐杀 zhx。 何大爷今天为
字符串定义了新的权值计算方法。一个字符串由小写字母组成,字符串的权值
被定义为其中出现次数最多的字符的次数减去出现次数最少的字符的次数。(注
意,在讨论出现最少的字符的时候,该字符必须至少出现一次)现在何大爷给
你一个字符串,何大爷想知道这个字符串的所有子串中权值最大的权值是多
少?
【输入格式】
第一行一个整数n,代表字符串的长度。
接下来一行n个小写字母,代表该字符串。
【输出格式】
一行一个整数代表答案。
【样例输入】
10
aabbaaabab
【样例输出】
3
【数据范围与规定】
对于30%的数据, 1 ≤ n≤ 100。
对于60%的数据, 1 ≤ n ≤ 1000。
对于100%的数据, 1 ≤ n ≤ 10^6.
显然需要O(n)的做法;
考场上的我用的尺取法,移动条件是ans值是否被更新;
显然这样只考虑了局部最优,却并不是全局最优,很容易就可以找到反例;
正解是动态规划?
mins[i][j] : 当前字符i与j出现次数的最小差值;
pos[i][j]:最小差值的位置;
sum[i]:当前字符i出现的次数;
pre[i]:当前字符i最后出现的位置;
思想挺巧妙的,反正我是想不到<-_<-;
感谢summer学姐的精彩讲解qwq;
总结:
1.考场上想不出正解就打暴力,不要对自己的正解过于自信,除非可以完美地证明其正确性;垃圾cgold,考试倒数,怎么还不滚粗
2.分段暴力;
3.
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int MAXN=30;int mins[MAXN][MAXN],pos[MAXN][MAXN],sum[MAXN],pre[MAXN];int n,ans;char s[1000002];void solve(){ scanf("%d%s",&n,s+1); for(int i=1;i<=n;i++) { int c=s[i]-'a'+1; sum[c]++,pre[c]=i; for(int j=1;j<=26;j++) { int cnt1=0,cnt2=0; if(j==c || !sum[j]) continue; if(pre[j]==pos[c][j]) cnt1++;//题目中明确说,要求字符j至少出现一次,如果j最后出现的位置为pos,我们减去后,j出现的次数就变成了0,所以需要把j至少算上一次,即差值需要减1; if(pre[j]==pos[j][c]) cnt2++; ans=max(ans,max(sum[c]-sum[j]-cnt1-mins[c][j],sum[j]-sum[c]-cnt2-mins[j][c])); } for(int j=1;j<=26;j++) { if(sum[c]-sum[j]<mins[c][j]) //更新mins mins[c][j]=sum[c]-sum[j],pos[c][j]=i; if(sum[j]-sum[c]<mins[j][c]) mins[j][c]=sum[j]-sum[c],pos[j][c]=i; } } cout<<ans; return;}int main(){ solve(); return 0;}
阅读全文
1 0
- 考试 DP+平面几何+搜索?
- 20161101的考试】搜索,搜索+dp,ds水题
- 平面几何
- 20161031的考试】模拟,暴力取模+矩阵快速幂,搜索脸的dp
- 【搜索】【RQNOJ】考试
- 【BZOJ1009】GT考试 DP
- 通过考试(概率dp)
- 二维平面几何
- HDU5120(平面几何)
- Vijos1697平面几何
- 初中平面几何
- 平面几何基础
- hdu1881搜索与dp
- hdu_1078 dp搜索
- hdu_1208 搜索dp
- NYOJ - skiing(搜索&dp)
- Hduoj1728【搜索+DP】
- dp记忆化搜索
- 两数相除,如果有余数则结果加一
- python 多进程详解
- 神经网络API、Kotlin支持,那些你必须了解的Android 8.1预览版和Android Studio 3.0新特性
- 实现js控制浏览器全屏,相当于f11
- Linux下常用头文件
- 考试 DP+平面几何+搜索?
- kylin与superset集成实现数据可视化
- c++ std::sort用法详细(对std::vector<int>, 对std::vector<std::string>, std::vector<char>等等)
- 字符编码详解——彻底理解掌握编码知识,“乱码”不复存在
- Kaldi在Window上的安装
- ecshop 后台分页功能
- 房产中介将面临新的挑战,如何提高用户体验竟是发展关键!
- Floyd深度学习训练平台
- servlet简单应用和ServletContext对象