fi,jfi,jf_{i,j} 表示长度为 iii 最大值为 j" role="presentation">jjj 的序列的答案

枚举最大值的位置转移就好了

#include <cstdio>
#include <iostream>
#include <algorithm>using namespace std;const int N=410,P=998244353;int n,k,ans,a[N],f[N][N],g[N][N],pw[N][N],val[N][N];inline int Pow(int x,int y){int ret=1;for(;y;y>>=1,x=1LL*x*x%P) if(y&1) ret=1LL*ret*x%P;return ret;
}int main(){scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){
    scanf("%d",&a[i]);pw[i][0]=1;for(int j=1;j<=n;j++) pw[i][j]=1LL*pw[i][j-1]*a[i]%P;}for(int _n=1;_n<=n;_n++)for(int i=1;i<=_n;i++)for(int j=1;j+k-1<=_n;j++)if(j<=i && j+k-1>=i) val[_n][i]++;for(int i=1;i<=n;i++)
    f[0][i]=g[0][i]=1;for(int i=1;i<k;i++)for(int j=1;j<=n;j++)f[i][j]=(Pow(j,i)+P-Pow(j-1,i))%P,g[i][j]=Pow(j,i);for(int i=k;i<=n;i++)f[i][1]=1LL*f[i-1][1]*a[1]%P,g[i][1]=f[i][1];for(int i=k;i<=n;i++)for(int j=2;j<=n;j++)for(int s=1;s<=i;s++){f[i][j]=(f[i][j]+1LL*g[s-1][j-1]*pw[j][val[i][s]]%P*g[i-s][j])%P;g[i][j]=(g[i][j-1]+f[i][j])%P;}int ans=0;for(int i=1;i<=n;i++) ans=(ans+f[n][i])%P;printf("%d\n",ans);return 0;
}

[DP] 【UNR #2】积劳成疾相关推荐

  1. 【uoj#311】[UNR #2]积劳成疾 dp

    题目描述 一个长度为 $n$ 的不确定序列,每个数在 $[1,n]$ 之间.给出 $m$ ,求所有序列的 $\prod_{i=1}^{n-m+1}w[\text{Max}_{j=i}^{j+m-1}a ...

  2. UOJ.311.[UNR#2]积劳成疾(DP)

    UOJ 序列中的每个位置是等价的.直接令\(f[i][j]\)表示,\(i\)个数的序列,最大值不超过\(j\)的所有序列每个长为\(k\)的子区间最大值的乘积的和. 由\(j-1\)转移到\(j\) ...

  3. [UOJ UNR #2]积劳成疾

    来自FallDream的博客,未经允许,请勿转载,谢谢. 传送门 区间最大值的题emmmm 想到构建笛卡尔树,这样自然就想到了一种dp f[i][j]表示大小为i的笛卡尔树,根的权值是j的答案. 转移 ...

  4. Noip前的大抱佛脚----赛前任务

    赛前任务 tags:任务清单 前言 现在xzy太弱了,而且他最近越来越弱了,天天被爆踩,天天被爆踩 题单不会在作业部落发布,所以可(yi)能(ding)会不及时更新 省选前的练习莫名其妙地成为了Noi ...

  5. uoj #311.【UNR #2】积劳成疾 dp

    题意 有n个位置,每个位置上的数是1到n中的任意一个,显然总的方案有nnnnn^n种.对于每一种方案,定义其价值为w[max(a[1..k])]∗w[max(a[2..k+1])]∗...∗w[max ...

  6. uoj#311. 【UNR #2】积劳成疾(期望dp)

    传送门 果然\(dp\)题就没咱啥事儿了 设\(f_{i,j}\)为长度为\(i\)的区间,所有元素的值不超过\(j\)的总的疲劳值 如果\(j\)没有出现过,那么\(f_{i,j}=f_{i,j-1 ...

  7. [DP] UOJ #311. 【UNR #2】积劳成疾

    fi,jf_{i,j}表示长为 ii 的区间 最大值是jj 的答案 转移就枚举最左边的最大值在区间的位置 前缀和优化下就好了 好像也可以fi,j,kf_{i,j,k}表示前 ii 个,末尾 KK 个中 ...

  8. [期望DP] UOJ#311. 【UNR #2】积劳成疾

    题意 题解 我太菜了-- 看官方题解吧: #include<cstdio> #include<algorithm> using namespace std; typedef l ...

  9. 【UOJ#311】【UNR #2】积劳成疾(动态规划)

    [UOJ#311][UNR #2]积劳成疾(动态规划) UOJ Solution 考虑最大值分治解决问题.每次枚举最大值所在的位置,强制不能跨过最大值,左右此时不会影响,可以分开考虑. 那么设\(f[ ...

最新文章

  1. 6.package配置相关
  2. Linux Kernel/optee/ATF等操作系统的异常向量表的速查
  3. From 百度知道 SQLSERVER 字符集排序规则简单说明
  4. Web框架——Flask系列之Flask简介(一)
  5. 第十三:Pytest参数化-@pytest.mark.parametrize装饰器来实现数据驱动测试
  6. 异常已存在具有相同键的条目。_灵敏度高,却已停产——山进PR-D3Plus DX收音机评测...
  7. python入门指南txt-【杂谈】爬虫基础与快速入门指南
  8. 1588: [HNOI2002]营业额统计 - BZOJ
  9. 10月全球浏览器份额态势:Chrome领先Firefox7.34%
  10. 三目表达式的错误使用
  11. 安卓手机误删文件恢复
  12. c语言析构函数的作用,详解析构函数出现的必要性
  13. 没学过Word排版的看过来 Word排版技巧分享
  14. ZYNQ-7000概述
  15. EasyWord的使用——POI操作Word的工具
  16. 网络营销实战课-文案实操案例
  17. 流氓软件 电脑软件管家
  18. 如何放大图像不模糊?图片无损放大
  19. 天兔oracle,Lepus_天兔的安装
  20. TCP三次握手代码分析与过程跟踪

热门文章

  1. 字节跳动测开面经(两面 + HR)
  2. HDU 5804/BC 86A Price List
  3. tpshop 阿里云短信sdk使用和带链接短信实现
  4. excel锁定单元格不能修改_【软件应用】工程中经常运用的Excel技巧(附教程下载)...
  5. MATLAB解线性方程组
  6. 汽车行业如何借助微信小程序引流
  7. Android Studio 编译时报文件不能删除,编译失败
  8. 《白帽子讲Web安全 》 随手记(一)
  9. 数据中心趋势:提高功率密度
  10. 关于通信方面的总结(通信协议、通信端口)