codeforces 611D New Year and Ancient Prophecy
2024-10-21 10:13:13
f[i = 以i结尾][j = 长度为j] = 方案数。
f[i][j] = sum{ f[i-j][k] , k < j || (k == j && s(i-j+1,j) > s(i-2*j+1,j) ) }
转移为O(N^3)需要优化,
对于k < j,递推g[i][j] = sum(f[i][k], k <= j)。
对于k == j,有O(N^2)个后缀,可以用二维数组lcp[i][j]递推i和j开头的最长公共前缀。
(后缀数组倍增大概也可以做的,用memcpy都可以过的,常数还比较小,极限数据1481ms。
#include<bits/stdc++.h>
using namespace std; typedef long long ll; const int N = 5e3+, mod = 1e9+;
int f[N][N], g[N][N];
char s[N]; int lcp[N][N]; bool bigger(int i, int j, int len)
{
if(lcp[i][j] >= len) return false;
else {
int c = lcp[i][j];
return s[i+c] > s[j+c];
}
} //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n, i, j;
scanf("%d%s", &n, s+);
if(s[] == ''){ puts(""); return ; }
for(i = n; i > ; i--){
for(j = n; j > ; j--){
if(s[i] == s[j]) lcp[i][j] = lcp[i+][j+]+;
}
} for(i = ; i <= n; i++){
for(j = ; j < i; j++) {
g[i][j] = g[i][j-];
if(s[i-j+] != ''){
f[i][j] = g[i-j][min(j-,i-j)];
if(f[i-j][j] && bigger(i-j+,i-j-j+,j)){
f[i][j] += f[i-j][j];
if(f[i][j] >= mod) f[i][j] -= mod;
}
g[i][j] += f[i][j];
if(g[i][j] >= mod) g[i][j] -= mod;
}
}
f[i][i] = ;
g[i][i] = g[i][i-] + ;
if(g[i][i] == mod) g[i][i] = ;
}
printf("%d\n",g[n][n]);
return ;
}
最新文章
- JAVA获取CLASSPATH路径
- IOS-01零碎知识总结
- 9.27js拓展、bootstrap菜鸟教程
- auto(c++11)
- Linq之Expression高级篇(常用表达式类型)
- C# where(泛型类型约束)
- Python文件处理之文件写入方式与写缓存(三)
- Xamarin:制作并发布apk
- Java开发环境的搭建01——Eclipse篇(Windows)
- 写一个python 爬虫爬取百度电影并存入mysql中
- Leetcode Articles: Insert into a Cyclic Sorted List
- Java 线程池的原理及实现
- H: Dave的组合数组(二分法)
- 【Java】maven多项目资源共享
- #考研笔记#计算机之PPT问题
- OOm是否可以try catch ?
- Goldengate:ERROR 180 encountered commit SCN that is not greater than the highest SCN already processed
- cf-Global Round2-E. Pavel and Triangles
- iOS开发-邮件发送
- Python 传值和传址 copy/deepcopy
热门文章
- PIE SDK栅格数据的金字塔创建
- vue 浏览器顶部有载入(进度)动画插件vue-progressbar
- journalctl 中文手册
- 安装cloudermanager时出现org.spingframework.web.bind.***** host[] is not present at AnnotationMethodHandlerAdapter.java line 738 ****错误(图文详解)(博主推荐)
- js判断触摸方向
- 数据挖掘:基于Spark+HanLP实现影视评论关键词抽取(1)
- lua 遍历table
- 深入理解JavaScript系列(29):设计模式之装饰者模式
- Spring Chapter4 WebSocket 胡乱翻译 (二)
- window 常用MySQL数据库命令总结