题解

dp

似乎这个最大值不好设计状态啊==

但是可以发现这\(n\)个点每个点都是相同的

可以设计状态\(f_{i,j}\)表示一个长度为\(i\)的一段区间的最大值不会超过\(j\)的价值

那么转移就类似于区间\(DP\),先枚举长度,再枚举最大值,然后再暴力枚举一个位置表示这个最大值最靠右的位置,然后计算这个最大值跨过这个区间的贡献即可

\(f_{i,j}=f_{i,j-1}+\sum_{k=1}^{i}{f_{k-1,j} \times f_{i-k,j - 1} \times p_{j}^{有几个长度为m的区间跨过了这个最大值}}\)

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
const int M = 405 ;
const int mod = 998244353 ;
using namespace std ; inline int read() {
char c = getchar() ; int x = 0 , w = 1 ;
while(c>'9'||c<'0') { if(c=='-') w = -1 ; c = getchar() ; }
while(c>='0'&&c<='9') { x = x*10+c-'0' ; c = getchar() ; }
return x*w ;
} int n , m ;
int val[M][M] , f[M][M] ; inline int T(int len , int k) {
int l = max(1 , k - m + 1) , r = min(len , k + m - 1) ;
return max(r - l - m + 2 , 0) ;
}
int main() {
n = read() ; m = read() ;
for(int i = 1 ; i <= n ; i ++) {
val[i][0] = 1 ; val[i][1] = read() ;
for(int j = 2 ; j <= n ; j ++)
val[i][j] = 1LL * val[i][j - 1] * val[i][1] % mod ;
}
for(int i = 0 ; i <= n ; i ++) f[0][i] = 1 ;
for(int i = 1 ; i <= n ; i ++)
for(int j = 1 ; j <= n ; j ++) {
f[i][j] = f[i][j - 1] ;
for(int k = 1 ; k <= i ; k ++)
f[i][j] = (f[i][j] + 1LL * f[k - 1][j] * f[i - k][j - 1] % mod * val[j][T(i , k)] % mod) % mod ;
}
printf("%d\n",f[n][n]) ;
return 0 ;
}

最新文章

  1. cocos2d-x:Particle System(粒子系统)
  2. dijit.form.Select 基本用法
  3. 【目录】Matlab和C#混合编程文章目录
  4. java 22 - 5 多线程之获取和设置线程对象的名称
  5. JPA学习(3)JPA API
  6. PHP写入Txt
  7. 手把手教你Windows下Go语言的环境搭建
  8. 开发中遇到的angularJs的小问题
  9. mysql优化21条经验(转)
  10. NEO从入门到开窗(3) - NEO编译器
  11. spark-shell报错:Exception in thread &quot;main&quot; java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream
  12. maven插件--assembly
  13. position:fixed固定定位的用法
  14. Hibernate主键自增策略
  15. hadoop分布式集群完全安装(非HA)
  16. 参考hadoop
  17. 建一个maven项目
  18. 使用FPM打包工具打rpm包
  19. Java课程作业之动手动脑(三)
  20. 并查集和树的一些性质 hdu1325

热门文章

  1. 教你如何查看CAD文件是哪个版本的来自http://blog.sina.com.cn/s/blog_4c9fa4dd0101il1v.html
  2. Cg入门6:函数2
  3. Ubuntu更换主板之后 网络重新配置
  4. How do you check if a variable is an array in JavaScript? [duplicate]
  5. curl 发送post请求
  6. Java入门 第一季第五章 编程练习解析
  7. 链接脚本在编程中的高级运用之二——执行时库和C++特性支持
  8. Android ImageLoader 本地缓存
  9. POJ 1927 Area in Triangle(计算几何)
  10. SQLServer导出单表数据