「AT2021」キャンディーとN人の子供 / Children and Candies
前言
今天练习赛出了这道题,由于我太菜没有在考场上做出来。
翻了题解后,感觉题解讲的并不是十分直观,所以自己写一篇。
题目大意
太长了,不讲了。
数据范围:
\(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\) 个糖果的答案。
那么转移方程为:
\]
这样来理解:
我们枚举一个 \(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的更多相关文章
- 「BZOJ3600」没有人的算术 替罪羊树+线段树
题目描述 过长--不想发图也不想发文字,所以就发链接吧-- 没有人的算术 题解 \(orz\)神题一枚 我们考虑如果插入的数不是数对,而是普通的数,这就是一道傻题了--直接线段树一顿乱上就可以了. 于 ...
- 零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术
原文:零元学Expression Design 4 - Chapter 7 使用内建功能「Clone」来达成Path的影分身之术 本章所介绍的是便利且快速的内建工具Clone ? 本章所介绍的是便利且 ...
- 「MoreThanJava」Day 5:面向对象进阶——继承详解
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「2014-5-31」Z-Stack - Modification of Zigbee Device Object for better network access management
写一份赏心悦目的工程文档,是很困难的事情.若想写得完善,不仅得用对工具(use the right tools),注重文笔,还得投入大把时间,真心是一件难度颇高的事情.但,若是真写好了,也是善莫大焉: ...
- 「2014-3-18」multi-pattern string match using aho-corasick
我是擅(倾)长(向)把一篇文章写成杂文的.毕竟,写博客记录生活点滴,比不得发 paper,要求字斟句酌八股结构到位:风格偏杂文一点,也是没人拒稿的.这么说来,arxiv 就好比是 paper 世界的博 ...
- jvm系列(十):如何优化Java GC「译」
本文由CrowHawk翻译,是Java GC调优的经典佳作. 本文翻译自Sangmin Lee发表在Cubrid上的"Become a Java GC Expert"系列文章的第三 ...
- 一个「学渣」从零开始的Web前端自学之路
从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
- 从 Spring Cloud 看一个微服务框架的「五脏六腑」
原文:https://webfe.kujiale.com/spring-could-heart/ Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...
随机推荐
- HBase 2.1.3 集群 web 报错InvalidProtocolBufferException 解决方法
搭建好HBase 集群后,各种后台进程都正常,搭建手册参考: Hbase 2.1.3 集群搭建手册https://www.cndba.cn/dave/article/3322 但是通过web访问,却报 ...
- 聊聊Redis的持久化
两种持久化策略 1.AOF:记录每一次的写操作到日志上,重启时重放日志以重建数据2.RDB:每隔一段时间保存一次当前时间点上的数据快照 快照就是一次又一次地从头开始创造一切3.可以关闭持久化4. ...
- 2.1.FastDFS-单机拆分版-单机版安装配置
Centos610系列配置 1.什么是FastDFS? FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负 ...
- combobox实现模糊搜索匹配
如图,输入关键字,进行匹配检索: 这里使用的是combobox组合框,对于combobox的创建可以使用<input>输入框,也可以使用<select>下拉选 HTML代码: ...
- ES6:let 与 const
在ES6中,let 用来定义变量,const 用来定义常量 事实上var可以看成是js语言设计上的错误,但是不能移除,因为需要向后兼容 于是提出了一个新的关键字let,可以将let看成更完美的var ...
- Debian9安装Metasploit
参考博文:https://www.jianshu.com/p/ea0629b9e367 0x0 添加Kali源 deb http://http.kali.org/kali kali-rolling m ...
- Cisco无线mDNS
1.mDNS介绍 两个协议:mDNS和Bonjour mDNS: mDNS(Multicast DNS):主要实现了在没有传统DNS Server的情况下使用LAN内的主机实现相互发现和通信. 使用U ...
- XCOJ 1205 A.First Blood
1205: A.First Blood 时间限制: 1 Sec 内存限制: 64 MB提交: 152 解决: 44 标签提交统计讨论版 题目描述 盖伦是个小学一年级的学生,在一次数学课的时候,老师 ...
- Java面向对象编程 -3.2
使用this调用本类方法 除了调用属性之外,this也可以实现方法的调用,但是对于方法的调用就必须考虑构造与普通方法 构造方法调用(this()):使用关键字new实例化对象的时候才会调用构造方法: ...
- webpack原理类型问题
1.webpack底层原理 (实现一个webpack) 步骤:1.拿到入口文件的代码并读出来转化为js对象(抽象语法术parser)2.拿到所有模块的依赖 ‘./message.js’,放进数组中 引 ...