当前位置: 首页 > news >正文

New Year Garland(计数类DP)

New Year Garland

题意

​ 用m种颜色的球装饰n层的圣诞树,圣诞树的第i层由 l i l_{i} li个彩球串成,且同一层相邻的球颜色不同,相邻的层之间彩球颜色的集合不同,问有多少种方案,对p取模。

分析

​ 首先先计算每一层各种小球选取情况下的方案数,因为限制每层小球只有 l i l_{i} li个,且 l i ≤ 5000 l_{i} \leq 5000 li5000,所以可以预处理出 g [ l i ] [ j ] g[l_{i}][j] g[li][j]表示 l i l_{i} li个球中有 j j j种颜色时放置的方案数,递推方程就是
g [ i ] [ j ] = g [ i − 1 ] [ j − 1 ] + g [ i − 1 ] [ j ] ∗ ( j − 1 ) g[i][j]=g[i-1][j-1]+g[i-1][j]*(j-1) g[i][j]=g[i1][j1]+g[i1][j](j1)

边界是 g [ 0 ] [ 0 ] = 1 g[0][0]=1 g[0][0]=1,递推方程的意思是要么在第 i − 1 i-1 i1个球后面放一个未出现的颜色的小球,要么放一个已经出现过的颜色的小球,因为相邻颜色不同,所以有 ( j − 1 ) (j-1) (j1)种方式,第i层放j种颜色小球的放置方案数就成了
j ! ∗ ( m j ) ∗ g [ l i ] [ j ] j!*\binom{m}{j}*g[l_{i}][j] j!(jm)g[li][j]

​ 然后再考虑层与层之间的限制,假如没有这个限制的话,dp就可以写成
d p [ i ] [ j ] = j ! ∗ ( m j ) ∗ g [ l i ] [ j ] ∗ ∑ k = 1 m i n ( m , l i − 1 ) d p [ i − 1 ] [ k ] dp[i][j]=j!*\binom{m}{j}*g[l_{i}][j]*\sum_{k=1}^{min(m,\ l_{i-1})}{dp[i-1][k]} dp[i][j]=j!(jm)g[li][j]k=1min(m, li1)dp[i1][k]

加上限制后,只需要减去相同颜色集合的对应方案数即可,那就成了
d p [ i ] [ j ] = j ! ( ( m j ) ∗ g [ l i ] [ j ] ∗ ∑ k = 1 m i n ( m , l i − 1 ) d p [ i − 1 ] [ k ] − g [ l i ] [ j ] ∗ d p [ i − 1 ] [ j ] ) dp[i][j]=j!(\binom{m}{j}*g[l_{i}][j]*\sum_{k=1}^{min(m,\ l_{i-1})}{dp[i-1][k]}-g[l_{i}][j]*dp[i-1][j]) dp[i][j]=j!((jm)g[li][j]k=1min(m, li1)dp[i1][k]g[li][j]dp[i1][j])
最终的答案就是
a n s = ∑ i = 1 m i n ( m , l n ) d p [ n ] [ i ] ans = \sum_{i=1}^{min(m,\ l_{n})}{dp[n][i]} ans=i=1min(m, ln)dp[n][i]
现在思考一下能够预处理的是 g [ l i ] [ j ] g[l_{i}][j] g[li][j]以及 j ! j! j! ( m j ) \binom{m}{j} (jm)好似能预处理出来,又好似因为p不一定是素数,不一定能求逆,尝试把 j ! j! j!带入方程观察,发现 ( m j ) \binom{m}{j} (jm)就变成了 A m j A_{m}^{j} Amj,可以开心的预处理了。前面都解决了,但里面还有一个 d p [ i − 1 ] [ k ] dp[i-1][k] dp[i1][k]的求和每次都要跑满循环,再次观察能否 O ( 1 ) O(1) O(1)求出。当然一定是可以边计算边求出上一轮dp的和,所以这个值也可以 O ( 1 ) O(1) O(1)求出了。边界就是第一轮的dp的和为1。但这就结束了嘛?显然没有:(。因为 n ≤ 1000000 n \leq 1000000 n1000000导致dp数组空间巨大,此时,不难发现,该轮的dp只与上一轮的dp值有关,即好似可以滚动数组优化之类的操作,用两个数组即可完成dp过程。

AC代码

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
int g[5010][5010], fac[5010], fac1[1000010], dp[5010], tmp[5010];
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int n, m, p;cin >> n >> m >> p;vector<int> l(n + 1);for (int i = 1; i <= n; i++) {cin >> l[i];}g[0][0] = 1;for (int i = 1; i <= 5000; i++) {for (int j = 1; j <= i; j++) {g[i][j] = (g[i - 1][j - 1] + 1LL * (j - 1) * g[i - 1][j] % p) % p;}}fac[0] = 1;for (int i = 1; i <= 5000; i++) {fac[i] = 1LL * fac[i - 1] * i % p;}fac1[0] = 1;for (int i = 1; i <= m; i++) {fac1[i] = 1LL * fac1[i - 1] * (m - i + 1) % p;}LL sum = 1;for (int i = 1; i <= n; i++) {LL res = 0;for (int j = 1; j <= l[i]; j++) {tmp[j] = (1LL * fac1[j] * g[l[i]][j] % p * sum % p - 1LL * fac[j] * g[l[i]][j] % p * dp[j] % p + p) % p;res = (tmp[j] + res) % p;}sum = res;for (int j = 1; j <= l[i - 1]; j++) {dp[j] = 0;}for (int j = 1; j <= l[i]; j++) {dp[j] = tmp[j];}}cout << sum << '\n';return 0;
}

相关文章:

New Year Garland(计数类DP)

New Year Garland 题意 ​ 用m种颜色的球装饰n层的圣诞树&#xff0c;圣诞树的第i层由 l i l_{i} li​个彩球串成&#xff0c;且同一层相邻的球颜色不同&#xff0c;相邻的层之间彩球颜色的集合不同&#xff0c;问有多少种方案&#xff0c;对p取模。 分析 ​ 首先先计算每一…...

32岁阿里P7,把简历改成不知名小公司,学历改成普通本科,工作内容不变,投简历全挂!...

hr靠什么来招人&#xff1f; 一位猎头讲述了自己和朋友打赌的故事&#xff1a; 朋友在阿里云&#xff0c;32岁&#xff0c;P7&#xff0c;他把简历上的公司改成不知名&#xff0c;学历改成普通本科&#xff0c;工作内容不变&#xff0c;结果投其他公司&#xff08;比如京东&…...

从三室心脏MRI影像检测主动脉瓣病变

Detecting Aortic Valve Pathology from the 3-Chamber Cine Cardiac MRI View 摘要 背景 心脏磁共振(CMR)是量化心脏容量、功能和血流量的金标准。定制的MR脉冲序列定义了对比机制&#xff0c;采集几何形状和定时&#xff0c;可以在CMR期间应用&#xff0c;以实现独特的组织…...

【JavaWeb】JavaScript

1、JavaScript 介绍 Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端&#xff0c;需要运行浏览器来解析执行 JavaScript 代码。 JS 是 Netscape 网景公司的产品&#xff0c;最早取名为 LiveScript;为了吸引更多 java 程序员。更名为 JavaScript。 JS 是弱…...

Apache Doris 1.2.4 Release 版本正式发布|版本通告

亲爱的社区小伙伴们&#xff0c;我们很高兴地宣布&#xff0c;Apache Doris 于 2023 年 4 月 27 日迎来 1.2.4 Release 版本的正式发布&#xff01;在 1.2.4 版本中&#xff0c;Doris 团队已经修复了自 1.2.3 版本发布以来近 150 个问题或性能改进项。同时&#xff0c;1.2.4 版…...

【C++STL】map

文章目录 一. map的介绍二. map的使用结束语 一. map的介绍 map是关联容器&#xff0c;它按照特定的次序&#xff08;按照key来比较&#xff09;存储由键值key和值value组合而成的元素在map中&#xff0c;键值key通常用于排序和唯一地标识元素&#xff0c;而value中存储与此键值…...

vue2项目PC端如何适配不同分辨率屏幕

项目构建&#xff1a;基于vue-cli3构建&#xff0c;使用postcss-px2rem px2rem-loader进行rem适配 实现原理&#xff1a;每次打包&#xff0c;webpack通过使用插件postcss-px2rem&#xff0c;帮我们自动将px单位转换成rem单位前方有坑&#xff1a;UI框架部分组件使用JavaScript…...

CorelDRAW2023最新版本图像设计软件

CorelDRAW 2023作为最新版的图像设计软件,在功能上做了较大提升,主要新的功能特性如下: 1. 全新界面设计:采用简约现代的 UI 设计,菜单和工具重新组织,更加直观易用。提供自动提示与设计指导,易于上手。 2. 智能工具与提示:运用 AI技术对用户操作行为和设计习惯进行分析,给出…...

第64章 树型结构数据的前端渲染渲染显示示例

1 \src\views\TreeTestView.vue <template> <div class"wrap"> <!--注意&#xff1a;1、“回到顶部”组件及其回滚内容都必须包含到同1个div容器中。--> <!-- 2、div容器中必须有1个唯1性的样式类&#xff08;例如&#xff1a;wrap&#xff09…...

超级国际象棋:第二个里程碑已完成

获取Cartesi资助的项目的最新进展&#xff0c;现在将完全去中心化的Web3国际象棋带到你的手中 “Ultrachess是一个完全基于区块链的国际象棋应用程序&#xff0c;由Cartesi Rollup技术支持&#xff0c;允许用户将真实价值投入到比赛中&#xff0c;不仅仅是他们的Elo分数。 此…...

vue3 HTML 和静态资源

目录 静态资源可以通过两种方式进行处理&#xff1a; URL 转换规则 public 文件夹 何时使用 public 文件夹 public/index.html 文件是一个会被 html-webpack-plugin 处理的模板。在构建过程中&#xff0c;资源链接会被自动注入。另外&#xff0c;Vue CLI 也会自动注入 re…...

5G基站外市电改造建设方案 (ppt可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除 外市电定义及分类 定义&#xff1a;由供电部门提供的专用高压电源或非专用高压电源或低压电源均称为市电。分类&#xff1a; &#xff08;1&#xff09;按电压等级分类 ①提供…...

C++ 类和对象(上)

类 面向对象的三大特性&#xff1a;封装&#xff0c;继承&#xff0c;多态 C语言结构体中只能定义变量&#xff0c;在C中&#xff0c;结构体内不仅可以定义变量&#xff0c;也可以定义函数。比如&#xff1a; 之前在数据结构初阶中&#xff0c;用C语言方式实现的栈&#xff0c;…...

【BIM+GIS】BIM模型导入GIS软件之前的一些处理设置

文章目录 一、模型位置发生偏移二、模型对象丢失或增加三、模型材质发生变化四、导出过程缓慢五、模型属性批量丢失一、模型位置发生偏移 在视图→可见性/图形替换模型类别→场地(VV可见性快捷),勾选项目基点。 单击选中项目基点,在属性中修改几点坐标。 即使修改了项目基…...

js FileReader的常用使用方法

FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件&#xff08;或原始数据缓冲区&#xff09;的内容&#xff0c;使用 File 或 Blob 对象指定要读取的文件或数据。 主要的读取方法&#xff1a; readAsArrayBuffer()&#xff1a; 开始读取指定的 Blob 中的内…...

网络威胁情报:数据的力量

在一个日益互联和数字化的世界中&#xff0c;网络威胁已成为一项重大挑战&#xff0c;可能危及您组织的声誉、财务稳定性和整体运营效率。 事实上&#xff0c;根据 IBM 2022 年的一份报告&#xff0c;数据泄露的平均成本现在为 435 万美元。 鉴于网络威胁的重要性和影响日益突…...

shell:清理指定目录中指定天数之前的旧文件

前言 我们在服务器运行一些服务经常会产生很多临时文件&#xff0c;而有些临时文件不定期处理很容易就打满了整个磁盘&#xff1b;所以有必要去定期清理&#xff0c;基于这个需求我们就可以搞一个脚本结合crontab或者服务调度这些来使用&#xff1b; 脚本实现 #!/bin/bash# …...

想入门网络安全?先来看看网络安全行业人才需求!

如果你是一个想要入门网络安全行业的小白、如果你是网络安全专业在读的大学生、如果你是正在找工作的新手&#xff0c;那么这篇文章你一定要仔细看。毕竟知己知彼百战百胜&#xff0c;知道行业的人才需求才能更好得发挥自己的优势。 当你打开BOSS直聘、拉钩等招聘网站&#xf…...

0424 spring AOP学习

AOP是指什么&#xff1f; 面向切面编程&#xff0c;Aspect Oriented Program。是一种编程范式、思想。 Spring AOP里涉及的AOP原理叫什么&#xff1f; 动态代理。 动态代理其实就是在运行时动态的生成目标对象的代理对象&#xff0c;在代理对象中对目标对象的方法进行增强。…...

GB/T 28181-2022 新版差异笔记

GB/T 28181-2022 新版差异笔记 文章目录 GB/T 28181-2022 新版差异笔记更改了标准范围删除部分术语和定义增加PTZ缩略语更改SIP监控域互联结构图更改了“联网系统通讯协议结构图”增加了媒体流数据传输的RTP时间戳要求增加了对H.265、AAC的支持更改了SDP协议的引用更改了与其他…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...