【GDOI2016】最长公共子串 题解
来源:互联网 发布:小凯老师淘宝 编辑:程序博客网 时间:2024/05/01 20:46
Description
给你两个字符串
给你
求
Solution
注意,公共子串是必须连着的(坑死我了)
可以发现,只要两个区间有可以重叠的地方,就可以把这两个区间合并成一个区间。
那么就可以把原本
如果一个位置没有被任何区间覆盖,那么我们就把它单独作为一个区间。
我们需要记录一下每个区间中每种字符的个数。
找到这个就可以开始DP了
设
设
然后我们可以暴力判断
如果当前搜到第
如果全部都可以的就使
最后,对于每个
Code
#include<cstdio>#include<cstdlib>#include<algorithm>#include<iostream>#include<cstring>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)#define fod(i,a,b) for(i=a;i>=b;i--)using namespace std;int al[2005][2],alp[2005][26],lt[26],bz[2005],f[2005][2010];char s[2005],t[2005];int lens,lent,n,m,ans;int main(){ freopen("lcs.in","r",stdin); freopen("lcs.out","w",stdout); cin>>t+1; scanf("\n"); cin>>s+1; scanf("\n"); lens=strlen(s+1); lent=strlen(t+1); int i,j,k; cin>>n; fo(i,1,n) { int x,y; scanf("%d%d",&x,&y); bz[x+1]++; bz[y+1]--; } j=0; m=0; fo(i,1,lens+1) { if (j==0&&j+bz[i]>0)al[++m][0]=i; else if(j>0&&j+bz[i]==0)al[m][1]=i; if(j+bz[i]==0&&j==0&&i!=lens+1) al[++m][0]=al[m][1]=i; j+=bz[i]; if (i!=lens+1) alp[m][s[i]-97]++; } fod(i,m,1) { int lg=al[i][1]-al[i][0]+1; fod(j,lent,1) { memset(lt,0,sizeof(lt)); fo(k,1,lg) { lt[t[j+k-1]-97]++; if (lt[t[j+k-1]-97]>alp[i][t[j+k-1]-97]) { f[i][j]=k-1; break; } if (k==lg||j+k>lent) { f[i][j]=k+f[i+1][j+k]; break; } } ans=max(ans,f[i][j]); } } fo(i,2,m) { int lg=al[i][1]-al[i][0]+1; fo(j,2,lent) { memset(lt,0,sizeof(lt)); for(k=1;j-k>=1&&al[i][1]-k>=al[i-1][0];k++) { lt[t[j-k]-97]++; if (lt[t[j-k]-97]>alp[i-1][t[j-k]-97]) { ans=max(ans,k-1+f[i][j]); break; } ans=max(ans,k+f[i][j]); } } } cout<<ans;}
0 0
- 【GDOI2016】最长公共子串 题解
- {题解}[jzoj4486] GDOI2016 Day1_T2 最长公共子串
- [GDOI2016]最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- 最长公共子串
- LeetCode 40. Combination Sum II(组合求和)
- 数据库的操作
- 为什么需要云压力性能测试?
- 控件、布局 知识碎片整理
- 润乾填报乱码解决
- 【GDOI2016】最长公共子串 题解
- Mysql性能优化--慢查询、索引、分表、增量备份还原
- 【unity插件】unity手柄插件Input输入管理插件,兼容各种主流手柄
- 关于阿里巴巴fastgson的使用
- 解决 ios7.0 以后自定义导航栏左边按钮靠右的问题
- 离散数学 求偏序集中的极大元与极小元
- 堆栈和托管堆 c#(1)
- [内核驱动]起步
- 框架 day31 Hibernate入门(log4j简介,核心配置,映射配置,核心api,OID映射)