前言

今天练习赛出了这道题,由于我太菜没有在考场上做出来。

翻了题解后,感觉题解讲的并不是十分直观,所以自己写一篇。


题目大意

太长了,不讲了。

数据范围:

\(1\leq N\leq 400\)

\(1\leq C\leq 400\)

\(1\leq A_i,B_i\leq 400\)


解题思路

考虑 \(\text{DP}\)(至于为什么是 \(\text{DP}\) 。。。靠经验吧)

设 \(f[i][j]\) 表示当前 \(\text{DP}\) 到了第 \(i\) 个人,已经发了 \(j\) 个糖果的答案。

那么转移方程为:

\[f[i][j]=\sum_{k=0}^jf[i-1][j-k]\left( \sum_{x=A_i}^{B_i}x^k \right)
\]

这样来理解:

我们枚举一个 \(k\ (0 \leq k \leq j)\),表示我们当前这个人也就是第 \(i\) 个人分到了 \(k\) 个糖果。

我们需要在之前的 \(i-1\) 个人的答案中都乘上当前这个人的贡献:\(\sum\limits_{x=A_i}^{B_i}x^k\)。

这就是转移方程的意义。

此外我们加一个前缀和优化就可以达到 \(O(n^3)\) 的复杂度。


细节注意事项

  • 注意取模的问题,减法记得加一个模数再去模
  • 中间运算记得用 \(\text{long long}\)

参考代码

/*--------------------------------
Author: The Ace Bee
Blog: www.cnblogs.com/zsbzsb
This code is made by The Ace Bee
--------------------------------*/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <ctime>
#define rg register
using namespace std;
template < typename T > inline void read(T& s) {
s = 0; int f = 0; char c = getchar();
while (!isdigit(c)) f |= (c == '-'), c = getchar();
while (isdigit(c)) s = s * 10 + (c ^ 48), c = getchar();
s = f ? -s : s;
} typedef long long LL;
const int p = 1000000007;
const int _ = 410; int n, c, a[_], b[_];
LL pw[_][_], f[_][_]; int main() {
read(n), read(c);
for (rg int i = 1; i <= n; ++i) read(a[i]);
for (rg int i = 1; i <= n; ++i) read(b[i]); for (rg int i = 1; i < _; ++i) pw[i][0] = 1ll;
for (rg int i = 1; i < _; ++i)
for (rg int j = 1; j < _; ++j)
pw[i][j] = 1ll * pw[i][j - 1] * i % p; for (rg int i = 1; i < _; ++i)
for (rg int j = 0; j < _; ++j)
pw[i][j] = (pw[i][j] + pw[i - 1][j]) % p; f[0][0] = 1;
for (rg int i = 1; i <= n; ++i)
for (rg int j = 0; j <= c; ++j)
for (rg int k = 0; k <= j; ++k)
f[i][j] = (f[i][j] + 1ll * f[i - 1][j - k] * (pw[b[i]][k] - pw[a[i] - 1][k] + p) % p) % p; printf("%lld\n", f[n][c]); return 0;
}

完结撒花\(qwq\)

「AT2021」キャンディーとN人の子供 / Children and Candies的更多相关文章

  1. 「BZOJ3600」没有人的算术 替罪羊树+线段树

    题目描述 过长--不想发图也不想发文字,所以就发链接吧-- 没有人的算术 题解 \(orz\)神题一枚 我们考虑如果插入的数不是数对,而是普通的数,这就是一道傻题了--直接线段树一顿乱上就可以了. 于 ...

  2. 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术

    原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...

  3. 「MoreThanJava」Day 5:面向对象进阶——继承详解

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  4. 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management

    写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...

  5. 「2014-3-18」multi-pattern string match using aho-corasick

    我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...

  6. jvm系列(十):如何优化Java GC「译」

    本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三 ...

  7. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...

  8. spring cloud 入门,看一个微服务框架的「五脏六腑」

    Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...

  9. 从 Spring Cloud 看一个微服务框架的「五脏六腑」

    原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

随机推荐

  1. 一年读100本书---HHR,NZJ---19年最后4个月

    那些自律到极致的人,都拥有了开挂的人生.生物钟,绝对一致之后,一切都会很高效. 19年最后一个季度的HHR计划:还剩下3个月的时间,主要搞定几件事情:创业(以太一堂,混沌大学),工作能力(推荐算法工程 ...

  2. Building Ethereum private chain on CentOS

    golang安装 yum install golang 查看版本 go version 安装以太坊源代码 Building Geth (command line client) Clone the r ...

  3. 【原】django实现列表分页功能

    在view.py里添加分页查询方法: from django.http import JsonResponse from django.views.decorators.http import req ...

  4. python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根。

    python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根. 重难点:原理为一个数的平方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历.精确度的使用.通过最高值和最低值确定二 ...

  5. Centos7下载和安装教程

    https://blog.csdn.net/qq_42570879/article/details/82853708 阿里下载64bit镜像:http://mirrors.aliyun.com/cen ...

  6. 大端(bigend)与小端(littleend)

                                      大端:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中: 小端:是指数据的高位保存在内存的高地址中,而数据的高 ...

  7. Flask - Flask高级技巧(Advanced Flask Patterns)

    传送门 来自作者的PPT https://speakerdeck.com/mitsuhiko/advanced-flask-patterns?slide=46

  8. Django模板及路由的配置

    学习内容: (1)路由的配置 (2)模板的介绍 (3)模板显示数据 一.路由的配置 以上一篇文章的名字Booketest项目,有一个子模块demo1进行讲解. 1.首先在Booktest项目下的同名子 ...

  9. 创业学习---今日头条创业过程分析---HHR计划

    本文搜集和整理了今日头条创业的一些关键点的资料------by 春跃(本文的主要观点都是搜集整理,所以不得本人同意不得转载) 一,18年之前的今日头条创业时间表: 1,张一鸣参与创业的履历:酷讯,饭否 ...

  10. ubuntu 修改和配置ip

    因为主机里面有好多个虚拟机,但是ip就一个,最近开了一个win的虚拟机,真好玩是不?所以就暂时把ubunut的ip给改了,要不冲突,哎呀,不说多了,上图, 1.修改配置文件blacklist.conf ...