题解

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 ;
}

转载于:https://www.cnblogs.com/beretty/p/10695108.html

[UOJ311]积劳成疾相关推荐

  1. uoj311 【UNR #2】积劳成疾

    传送门:http://uoj.ac/problem/311 [题解] 这题的期望dp好神奇啊(可能是我太菜了) 由于每个位置都完全一样,所以我们设$f_{i,j}$表示审了连续$i$个位置,最大值不超 ...

  2. 【UOJ311】【UNR #2】积劳成疾

    [题目链接] 点击打开链接 [思路要点] 笛卡尔树DP,记\(F_{i,j}\)表示长度为\(i\)的区间中所有数的最大值小于等于\(j\),所有方案的贡献之和. 考虑枚举区间最大值第一次出现的位置, ...

  3. smart原则_《红楼梦》凤姐做领导为什么积劳成疾?只因为不懂SMART原则

    凤姐是荣国府鞠躬尽瘁的CEO,一生勤劳,兢兢业业,为了贾府殚精竭虑,积劳成疾.如果她能懂得运用SMART原则,兴许就不会早早算了卿卿性命. 王熙凤 一.凤姐是个有能力的CEO (一)协理宁国府扬名立万 ...

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

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

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

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

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

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

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

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

  8. [DP] 【UNR #2】积劳成疾

    fi,jfi,jf_{i,j} 表示长度为 iii 最大值为 j" role="presentation">jjj 的序列的答案 枚举最大值的位置转移就好了 #in ...

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

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

最新文章

  1. 陈道明还原度最高!AI 脑补宋明清皇帝长相,四大模型构想真实五官
  2. FAQ about AJAX-part II
  3. 竞赛报名 | AI时代数据库交互怎么玩?首届中文NL2SQL挑战赛开战
  4. 使用redis实现订阅功能
  5. JavaEE实战班第八天
  6. SpringAOP 注解方式代码示例
  7. linux远程登录模拟输入输出重定向,从零开始学习Linux(三十三):Shell基础之输入输出重定向...
  8. 利用nginx-rtmp搭建视频点播、直播、HLS服务器
  9. Visual Studio2012 安装教程
  10. libaio.so.1 is needed by MySQL-server-5.5.48-1.linux2.6.i386
  11. win10运行窗口打开共享服务器很慢,win10局域网共享文件慢怎么办 局域网共享文件夹无法访问是什么原因...
  12. 武汉最最最牛逼的IT公司全在这了
  13. python notebook打不开_jupyter notebook打不开怎么办
  14. 别瞎学了,我的MySQL学习之路(超详细超硬核)
  15. 一个简易版的新闻应用(同时兼容手机和平板)
  16. 在windows中使用bat脚本获取linux服务器文件
  17. 「码力全开」假如今年公司中秋的月饼由你来设计
  18. 西铁城s621c打印机调试说明,西铁城CL-S621CII驱动
  19. Makefile 文件的编写
  20. 电路板上为何要有孔洞?何谓PTH/NPTH/vias(导通孔)

热门文章

  1. AI电话机器人有没有效果?具体的功能都有哪些?
  2. Python打印九九乘法口诀表
  3. iOS10 新特性-新功能,以及ReplayKit库
  4. 日月光华深度学习(五)--卫星图像识别tf.data、卷积综合实例
  5. 2008中国十佳IC设计公司(二):土鳖博士创业一样成功
  6. Linux输入命令不显示
  7. 一些vc开发浏览器及插件的资料
  8. 西安财经大学计算机考研科目,西安财经大学2020年硕士研究生考试复试科目与参考书目...
  9. 如何批量将多个 PPT 文档中的图片提取出来
  10. SAP汇率损益处理方法