文章目录

  • 题意
  • 题解

题意

给nnn个孩子发kkk颗糖,每个孩子最多拿到aia_iai​颗,问有多少种分法.
n≤100,k≤105n\leq 100,k\leq 10^5n≤100,k≤105.

题解

考虑dp.dp.dp.
非常裸的dpdpdp如下.

for (int i=1;i<=n;++i) {for (int j=k;~j;--j)for (int l=j+1;l<=j+a[i];++l) dp[l]=(dp[l]+dp[j])%mod;
}

复杂度为O(n×k2)O(n \times k^2)O(n×k2),显然不能通过.
令dpjdp_jdpj​为前iii(滚动数组)个孩子有kkk颗糖没有发到的总分法数.
假设当前的孩子最多能够分到kkk颗糖而不是aia_iai​颗,则
dpk=上一个dpkdp_k=上一个dp_kdpk​=上一个dpk​(这个孩子没分到糖).
dpk−1=上一个dpk−1+dpkdp_{k-1}=上一个dp_{k-1}+dp_kdpk−1​=上一个dpk−1​+dpk​(这个孩子可以分到一颗糖,也可以不分到糖).
以此类推,dp0=上一个dp0+dp1+...+dpk−1+dpkdp_0=上一个dp_0+dp_1+...+dp_{k-1}+dp_kdp0​=上一个dp0​+dp1​+...+dpk−1​+dpk​.
但是实际上这个孩子最多只能分到aia_iai​颗糖,因此我们要把超过aia_iai​的部分减掉.
由于刚才已经做过前缀和,对jjj只需要减掉dpj+ai+1dp_{j+a_i+1}dpj+ai​+1​这个位置的答案就可以了.
这样一来本题就解决了.
谢谢大家.

const int yuzu=2e5,mod=1e9+7;
typedef ll fuko[yuzu|10];
fuko dp;
int main() {int i,n,k,a;read(n),read(k);for (dp[k]=1;read(a);) {for (i=k;i--;) dp[i]+=dp[i+1];for (i=0;i<k;++i) dp[i]=(dp[i]-dp[i+a+1])%mod;}printf("%lld\n",*dp);
}

Atcoder dp_m Candies 前缀和优化dp相关推荐

  1. 玲珑oj 1032 (容斥原理或前缀和优化dp)

    题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数题面十分简单,n个球放m个盒子,可以空,盒子不同,要求球数最多的盒子唯一,方案数 n,m都是500,考虑复杂度O(n3) ...

  2. bzoj 3398 [Usaco2009 Feb]Bullcow 牡牛和牝牛——前缀和优化dp / 排列组合

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3398 好简单呀.而且是自己想出来的. dp[ i ]表示最后一个牡牛在 i 的方案数. 当前 ...

  3. #798. 徐老师的二维动规(二维前缀和优化+dp)

    考虑进行 DP,记 dp[i][j] 为 (1, 1) 到 (i, j) 的方案数,此时暴力求dp的复杂度为 O(WHK^2) ,可以通过 70分的数据.注意到转移的本质其实就是子矩阵求和,用二维前缀 ...

  4. 2021牛客第一场 I. Increasing Subsequence-前缀和优化dp

    https://ac.nowcoder.com/acm/contest/11166/I 思路:dp[i][j] 是表示上上步走在i点,上一步走在j点的期望.首先我们很容易想到n^3的做法,那我们必须考 ...

  5. codeforces #274 C. Riding in a Lift dp+前缀和优化

    codeforces #274  C. Riding in a Lift   dp+前缀和优化 Imagine that you are in a building that has exactly  ...

  6. [APIO2016] 划艇(dp + 组合数 + 前缀和优化)

    problem luogu-P3643 solution 有个显然的暴力 dpdpdp.设 dp(i,j):dp(i,j):dp(i,j): 到了第 iii 个学校,其参加且派出 jjj 个划艇的方案 ...

  7. AtCoder abc256全题解(区间合并模板、矩阵快速幂优化dp、线段树……)

    文章目录 A B C-枚举 D-区间合并模板 E-图论建模,函数图的性质 题意 思路 代码 F-树状数组 题意 思路 代码 G-矩阵快速幂优化dp H-线段树 思路 实现 传送门 本文CSDN 本文j ...

  8. AtCoder AGC036D Negative Cycle (图论、DP)

    题目链接 https://atcoder.jp/contests/agc036/tasks/agc036_d 题解 这都是怎么想出来的啊..目瞪口呆系列.. 第一步转化至关重要: 一张图中不存在负环意 ...

  9. 序列计数(动态规划/自动机/前缀和优化)

    序列计数 对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一,可以进行无限次这样的操作,求解可以产生多少种不同的序列. 首先我们不能考虑操作,而是考虑合法序列,显然最后会形成若干个区 ...

最新文章

  1. [Swift]在不依赖三方库的情况下如何异步下载和缓存图片?
  2. C#实现Office文档转Pdf的方法
  3. mysql分布式安装可靠读写案列图解,高并发下的分布式锁-mysql篇
  4. express bodyparser_nodejs库express是如何接收inbound json请求的
  5. vue.js框架搭建
  6. 07:有趣的跳跃【一维数组】
  7. java语言的技术可行性_可行性分析的主要内容( )。
  8. 【转载】全球天然气探明储量
  9. java计算101~200之间的素数
  10. 存储专访:整合磁带与磁盘 昆腾为用户提供更灵活的选择
  11. 软件测试面试题(2020.6.29)
  12. win7桌面上的ie图标删不掉怎么办
  13. ST-Link v2 下载 出现target dll has been cancelled 的错误的解决方法
  14. 新浪微博API错误代码说明对照表
  15. 《国际名酒知识与品鉴》学习笔记
  16. 两家“国网”合建5G,三大运营商“好日子到头”?
  17. 安卓模拟器刷小米系统_米柚模拟器下载_米柚手游模拟器(在电脑上玩遍小米所有手游) 2.1.9.9 官方版_极速下载站...
  18. 谈谈我在PyTorch踩过的12坑
  19. 看得见风和日丽,看不见风起“云”涌
  20. 视图的定义,修改,删除,更新,以及定义视图的好处。

热门文章

  1. 嵌入式linux 竖屏,嵌入式Linux下竖屏显示配置
  2. 使用docker 注册runner
  3. 常规诊疗条件下比较依那西普生物类似药(益赛普)与阿达木、英夫利西对RA的疗效[EULAR2015_SAT0360]...
  4. 第一周-2.3成绩排序
  5. 三菱FX3U/FX1N底层源码,PLSR源码, 总体功能和指令可能支持在RUN中下载程序,支持注释的写入和读取,支持脉冲输出与定位指令(包括PLSY /PWM/PLSR/PLSV/DRVI /DRV
  6. 个人自我介绍PPT模板推荐
  7. Python实现VRP常见求解算法——蚁群算法(ACO)
  8. 数据通信与计算机网络A笔记
  9. csdn的markdown编辑器基本语法(整理版)
  10. 10年后重温《我奋斗了18年才和你坐在一起喝咖啡》