【JZOJ5272】【GDOI2018模拟8.14】神奇的重复序列
来源:互联网 发布:java安全等级设置 编辑:程序博客网 时间:2024/05/18 23:16
Description
Data Constraint
Solution
我们发现当两个起点i,j(i
Code
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int maxn=3e3+5;int bz[maxn][200],f[maxn][maxn],mx[maxn];int n,m,i,t,j,k,l,x,y,z,num,sum,ans;char s[maxn];int pan(int i,int j,int l){ if (j-(i-l)>i) return 2*(i-l+1);return j-l+1;}int main(){ freopen("repeat.in","r",stdin);freopen("repeat.out","w",stdout); scanf("%d\n",&m); scanf("%s\n",s+1);n=strlen(s+1); for (k=1;k<n;k++){ //memset(bz,0,sizeof(bz));memset(f,0,sizeof(f));memset(mx,0,sizeof(mx)); l=1;sum=0; for (i=1;i<=n-k;i++){ j=i+k;t=j%k; f[t][bz[t][s[j]]]--; bz[t][s[j]]++; f[t][bz[t][s[j]]]++; if (mx[t]<bz[t][s[j]]) sum++,mx[t]++; if (j-(i-l)>i){ f[t][bz[t][s[i]]]--; bz[t][s[i]]++; f[t][bz[t][s[i]]]++; if (mx[t]<bz[t][s[i]]) sum=sum-mx[t]+(mx[t]=bz[t][s[i]]); } while (pan(i,j,l)-sum>m){ t=l%k; f[t][bz[t][s[l]]]--; if (mx[t]==bz[t][s[l]] && !f[t][mx[t]]) sum--,mx[t]--; bz[t][s[l]]--; f[t][bz[t][s[l]]]++; if (j-(i-l)>i){ x=j-(i-l); f[t][bz[t][s[x]]]--; if (mx[t]==bz[t][s[x]] && !f[t][mx[t]]) sum--,mx[t]--; bz[t][s[x]]--; f[t][bz[t][s[x]]]++; } l++; } if (ans<i-l+1) ans=i-l+1; } i=n-k; while (l<=i){ t=l%k; f[t][bz[t][s[l]]]--; if (mx[t]==bz[t][s[l]] && !f[t][mx[t]]) sum--,mx[t]--; bz[t][s[l]]--; f[t][bz[t][s[l]]]++; if (j-(i-l)>i){ x=j-(i-l); f[t][bz[t][s[x]]]--; if (mx[t]==bz[t][s[x]] && !f[t][mx[t]]) sum--,mx[t]--; bz[t][s[x]]--; f[t][bz[t][s[x]]]++; } l++; } } printf("%d\n",ans);}
阅读全文
1 0
- 【JZOJ5272】【GDOI2018模拟8.14】神奇的重复序列
- 【JZOJ5272】【GDOI2018模拟】神奇的重复序列(DP,性质题)
- jzoj5272 神奇的重复序列 (寻找性质)
- JZOJ5272. 神奇的重复序列 结论
- 【GDOI2018模拟8.14】神奇的矩阵
- 【JZOJ5270】【GDOI2018模拟8.14】神奇的矩阵
- 【GDOI2018模拟8.14】神奇的救火现场
- 【JZO5271】【GDOI2018模拟8.14】神奇的救火现场
- 【JZOJ5270】【GDOI2018模拟】神奇的矩阵(二维线段树)
- 【JZOJ 5272】神奇的重复序列
- 【JZOJ 5272】 神奇的重复序列
- 【GDOI2018模拟8.7】最长公共子序列
- 【GDOI2018模拟7.14】小奇的糖果
- 【GDOI2018模拟8.7】图的异或
- 【jzoj5237】【GDOI2018模拟8.7】【最长公共子序列 】【动态规划】
- 【JZOJ5237】【GDOI2018模拟8.7】最长公共子序列
- jzoj5220 【GDOI2018模拟7.10】C (双序列dp)
- 1007神奇的序列
- (C++)stack小结
- latex公式、图片、表格的插入。(个人笔记)
- Java I/O之对象序列化与反序列化
- 【SikuliX】基于图像识别的Web自动化测试
- hdu 6166 Senior Pan(最短路)
- 【JZOJ5272】【GDOI2018模拟8.14】神奇的重复序列
- Android中字符串String的拆分-split
- kali sudo apt install 无法定位软件包
- python爬虫学习第二十九天
- 十年研发经验工程师的嵌入式学习书籍大推荐
- wordpress必备插件Maintenance Mode开启网站维护模式
- HDU 1370 Biorhythms (中国剩余定理, 简单套用)
- 正则表达式
- zTree插件setting配置详解