大意:定义一个长为$k>1$且首项为$k-1$的区间为好区间. 定义一个能划分为若干个好区间的序列为好序列. 给定序列$a$, 求有多少个子序列为好序列.

刚开始一直没想出来怎么避免重复计数, 看了别人题解才会.

设$dp[i]$为以$a_i$开头的个数, 枚举$a_i$所在好区间的最后一个数$j$, 有$dp[i]=\sum \binom{j-1-1}{a_i-1}\sum\limits_{k=j+1}^n dp[k]$

#include <iostream>
#include <algorithm>
#include <cstdio>
#define REP(i,a,n) for(int i=a;i<=n;++i)
#define PER(i,a,n) for(int i=n;i>=a;--i)
using namespace std;
typedef long long ll;
const int P = 998244353, INF = 0x3f3f3f3f;
const int N = 1e3+10;
int n,a[N],dp[N],C[N][N],sum[N]; int main() {
scanf("%d", &n);
REP(i,1,n) scanf("%d", a+i);
REP(i,0,n) {
C[i][0] = 1;
REP(j,1,i) C[i][j]=(C[i-1][j]+C[i-1][j-1])%P;
}
int ans = 0;
PER(i,1,n) {
if (a[i]>0) {
REP(j,i+a[i],n) dp[i] = (dp[i]+C[j-i-1][a[i]-1]*(1ll+sum[j+1]))%P;
}
sum[i] = (sum[i+1]+dp[i])%P;
}
printf("%d\n",sum[1]);
}

最新文章

  1. MySQL ROOT密码更改
  2. Nginx+php+fastcgi在win7下的配置
  3. python之优雅处理套接字错误
  4. hibernate 不识别union解决方法
  5. C基础--结构体
  6. @Repository @Resource
  7. Running a Remote Desktop on a Windows Azure Linux VM (远程桌面到Windows Azure Linux )-摘自网络(试了,没成功 - -!)
  8. Excel Xll开发资料
  9. xml的语法与创建
  10. find the safest road(floyd)
  11. QT5控件-QPushButton和QFocusFrame(按钮和焦点框)
  12. chromedriver bug
  13. NYOJ 47 河问题
  14. yowsup ( an application to use whatsapp) hack
  15. 转:loadruner报错:Step download timeout(120 seconds)的一个解决方法
  16. Sublime Text 3 配置分析与我的配置---小结
  17. 配置不同环境下启用swagger,在生产环境关闭swagger
  18. jquery ajax file upload NET MVC 无刷新文件上传
  19. python_非阻塞套接字及I/O流
  20. Android动态设置纯色图标的颜色

热门文章

  1. Linux 连接memcache 拒绝连接,防火墙关闭,selinux disabled 仍然不行,最后在外站找到原因,为服务器添加memcache访问权限
  2. 连接池设置导致的“血案” 原创: 一页破书 一页破书 5月6日 这个问题被投诉的几个月了,一直没重视——内部客户嘛&#128575; 问题现象: 隔几周就会出现 A服务调用B服务超时 脚趾头想就是防火墙的问题,A、B两服务之间有防火墙 找运维查看防火墙日志确实断掉了tcp连接,但是是因为B服务5分钟没有回包,下面这个表情就是我当时的心情——其实我们在防火墙、A服务、B服务都抓包了,几十个G的t
  3. PHP无限级树形结构算法(递归和引用)
  4. Cisco设备自动定时备份配置
  5. List根据多个字段分组
  6. [AI] 深度数学 - Bayes
  7. matlab学习——02整数规划(蒙特卡洛法,指派问题,混合整数规划)
  8. node节点扩容
  9. laravel-excel 表格 文档翻译笔记
  10. godot新手教程1[button信号使用]&lt;godot节点信号对照及节点属性用法&gt;