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

Codeforces Round 258 (Div. 2) E. Devu and Flowers 生成函数

题目链接

题目大意

n n n ( 1 ≤ n ≤ 20 ) (1\leq n \leq 20) (1n20) 个花瓶,第 i i i 个花瓶里有 f i f_i fi ( 1 ≤ f i ≤ 1 0 12 ) (1\leq f_i \leq 10^{12}) (1fi1012) 朵花。现在要选择 s s s ( 1 ≤ s ≤ 1 0 14 ) (1\leq s \leq 10^{14}) (1s1014)朵花。

求出有多少种方案。两种方案不同当且仅当两种方案中至少有一个花瓶选择花的数量不同,答案对 1 0 9 + 7 10^9+7 109+7 取模。

思路

取第 i i i 种花的生成函数可以表示为 : f i ( x ) = f_i(x)= fi(x)= 1 + x + x 2 + x 3 + ⋅ ⋅ ⋅ x f i 1+x+x^2+x^3+ \cdot \cdot \cdot x^{f_i} 1+x+x2+x3+xfi.

则选取方案的生成函数可以表示为 : G ( x ) = G(x)= G(x)= f 1 ( x ) ⋅ f 2 ( x ) ⋅ ⋅ ⋅ f n ( x ) = f_1(x) \cdot f_2(x) \cdot \cdot \cdot f_n(x) = f1(x)f2(x)fn(x)= ( 1 − x f 1 + 1 ) ( 1 − x f 2 + 1 ) ( 1 − x f 3 + 1 ) ⋅ ⋅ ⋅ ( 1 − x f n + 1 ) ( 1 − x ) n \frac {(1-x^{f_1+1})(1-x^{f_2+1})(1-x^{f_3+1}) \cdot \cdot \cdot (1-x^{f_n+1})} {(1-x)^n} (1x)n(1xf1+1)(1xf2+1)(1xf3+1)⋅⋅⋅(1xfn+1) = = = ∏ i = 1 n ( 1 − x f i + 1 ) ( 1 − x ) n \frac {\prod_{i=1}^{n}(1-x^{f_i+1})}{(1-x)^{n}} (1x)ni=1n(1xfi+1) = = = ∏ i = 1 n ( 1 − x f i + 1 ) \prod_{i=1}^{n}(1-x^{f_i+1}) i=1n(1xfi+1) ⋅ \cdot ∑ i = 0 ∞ \sum_{i=0}^\infty i=0 ( i + n − 1 i ) {i+n-1\choose i} (ii+n1) x i x_i xi = = = ∏ i = 1 n ( 1 − x f i + 1 ) \prod_{i=1}^{n}(1-x^{f_i+1}) i=1n(1xfi+1) ⋅ \cdot ∑ i = 0 ∞ \sum_{i=0}^\infty i=0 ( i + n − 1 n − 1 ) {i+n-1\choose n-1} (n1i+n1) x i x_i xi .

[ x s ] G ( x ) [x^s]G(x) [xs]G(x)即为所求的答案。

A ( x ) = ∏ i = 1 n ( 1 − x f i + 1 ) A(x)=\prod_{i=1}^{n}(1-x^{f_i+1}) A(x)=i=1n(1xfi+1), B ( x ) = ∑ i = 0 ∞ B(x)=\sum_{i=0}^\infty B(x)=i=0 ( i + n − 1 n − 1 ) x i {i+n-1\choose n-1} x_i (n1i+n1)xi.

由于 n ≤ 20 n\leq20 n20 , 所以 A ( x ) A(x) A(x) 最多只有 2 20 2^{20} 220 项,可以直接枚举,即 a n s = [ x s ] G ( x ) = ∑ i = 0 2 n [ x i ] A ( x ) ⋅ [ x s − i ] B ( x ) = ans=[x^s]G(x)=\sum_{i=0}^{2^n}[x^i]A(x) \cdot [x^{s-i}]B(x)= ans=[xs]G(x)=i=02n[xi]A(x)[xsi]B(x)= ∑ i = 0 2 n [ x i ] A ( x ) ⋅ ( s − i + n − 1 n − 1 ) \sum_{i=0}^{2^n}[x^i]A(x) \cdot {s-i+n-1\choose n-1} i=02n[xi]A(x)(n1si+n1),由于 n n n 很小可以暴力计算组合数,总的时间复杂度为 O ( n ⋅ 2 n ) O(n \cdot 2^n) O(n2n).

code

#include <bits/stdc++.h>
#define int long long
#define ll long long
#define pii pair<int, int>using namespace std;
const int mod = 1e9 + 7;
int f[30];int ksm(int x, int k)
{int res = 1;while (k > 0){if (k & 1)res = res * x % mod;x = x * x % mod;k >>= 1;}return res;
}signed main()
{ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);int n, s;cin >> n >> s;int fac = 1;for (int i = 1; i <= n; ++i){cin >> f[i - 1];if (i < n)fac = fac * i % mod;}int infac = ksm(fac, mod - 2);int ans = 0;for (int i = 0; i < (1ll << n); ++i){int cnt = 0, sum = 0;for (int j = 0; j < n; ++j){if ((1ll << j) & i)cnt++, sum += f[j] + 1;}if (sum > s)continue;int tmp = 1;for (int j = 0; j < n - 1; ++j){int p = (s - sum + n - 1 - j) % mod;tmp = tmp * p % mod;}tmp = tmp * infac % mod;ans = (ans + ((cnt & 1) ? mod - tmp : tmp) % mod) % mod;}cout << (ans + mod) % mod << '\n';return 0;
}

相关文章:

Codeforces Round 258 (Div. 2) E. Devu and Flowers 生成函数

题目链接 题目大意 有 n n n ( 1 ≤ n ≤ 20 ) (1\leq n \leq 20) (1≤n≤20) 个花瓶&#xff0c;第 i i i 个花瓶里有 f i f_i fi​ ( 1 ≤ f i ≤ 1 0 12 ) (1\leq f_i \leq 10^{12}) (1≤fi​≤1012) 朵花。现在要选择 s s s ( 1 ≤ s ≤ 1 0 14 ) (1\leq s \leq 1…...

【高并发内存池】释放内存 + 申请和释放总结

高并发内存池 1. 释放内存1.1 thread cache1.2 central cache1.3 page cache 2. 申请和释放剩余补充 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x…...

AutoGen学习笔记系列(九)Advanced - Selector Group Chat

这篇文章瞄的是AutoGen官方教学文档 Advanced 章节中的 Selector Group Chat 篇章&#xff0c;介绍了SelectorGroupChat对象如何从一个Team中选择其中一个Agent与LLM进行对话&#xff0c;并且在得到结果后进行二次规划&#xff0c;同时你也可以自定义选择函数。本质上还是对Tea…...

Stream特性(踩坑):惰性执行、不修改原始数据源

在日常开发中&#xff0c;Stream API 提供了一种高效且易于使用的工具集来处理集合数据。 本文主要讲解 Stream 的两个特性&#xff1a;惰性执行&#xff0c;不修改原始数据源。 为什么说这两个、而不讲下其他的特性呢&#xff1f;主要是因为在开发中如果忽略这两个特性的话&…...

springcloud sentinel教程

‌QPS&#xff08;Queries Per Second&#xff09;即每秒查询率 TPS&#xff0c;每秒处理的事务数目 PV&#xff08;page view&#xff09;即页面浏览量 UV 访问数&#xff08;Unique Visitor&#xff09;指独立访客访问数 一、初识Sentinel 什么是雪崩问题? 微服务之间相…...

像素的一生 Life of a Pixel - Steve Kobes 2020版

像素的一生 Life of a Pixel - Steve Kobes 2020版 《Life of a Pixel》 作者是Google大佬 Steve Kobes 2020年 介绍Chromium内核完整渲染流程的视频&#xff0c;介绍的非常好&#xff0c;想要学习了解chromium内核渲染必看&#xff01; 油管视频地址为&#xff1a;https://w…...

系统部署【信创名录】及其查询地址

一、信创类型 &#xff08;一&#xff09;服务器&#xff1a; 1.华为云 2.腾讯云 3.阿里云 &#xff08;二&#xff09;中央处理器&#xff08;CPU&#xff09;&#xff1a; 1.海思&#xff0c;鲲鹏920服务器 &#xff08;三&#xff09;中间件 1.人大金仓 &#xff0…...

VSCode 配置优化指南:打造高效的 uni-app、Vue2/3、JS/TS 开发环境

VSCode 配置优化指南,适用于 uni-app、Vue2、Vue3、JavaScript、TypeScript 开发,包括插件推荐、设置优化、代码片段、调试配置等,确保你的开发体验更加流畅高效。 1. 安装 VSCode 如果你还未安装 VSCode,可前往 VSCode 官网 下载最新版并安装。 2. 安装推荐插件 (1) Vue…...

C++中的析构函数

目录 一、什么是析构函数&#xff1a; 二、析构函数的特性&#xff1a; 一、什么是析构函数&#xff1a; C中的析构函数非常简单&#xff0c;它的功能无非是帮助我们自动归还堆区的空间给操作系统。当我们使用内存开辟函数&#xff08;如malloc()、realloc()&#xff09;等&a…...

同步,异步,并发,并行

同步: 任务按顺序执行&#xff0c;必须等待前一个任务完成后才能开始下一个任务。 任务之间是强依赖的&#xff0c;通过直接调用或阻塞等待实现。 示例&#xff1a;读取文件时&#xff0c;代码会阻塞直到文件读取完成。 异步&#xff1a; 任务无需等待前一个任务完成即可启…...

种子填充(Floodfill、泛滥填充、洪水填充) 算法c++模板

种子填充(Floodfill) 算法: 从任意 W 开始,不停地把邻接的 W 用 . 代替。1 次 DFS 后与初始 W 连接的所有 W 都被替换成 . 了。 因此,直到图中不存在 W 为止,总共进行 DFS 的次数就是答案了。 问题: 有一个大小为 N x M 的园子,雨后积水。 8 连通的积水被认为是连接在…...

MATLAB控制函数测试要点剖析

一、功能准确性检验 基础功能核验 针对常用控制函数&#xff0c;像用于传递函数建模的 tf 、构建状态空间模型的 ss &#xff0c;以及开展阶跃响应分析的 step 等&#xff0c;必须确认其能精准执行基础操作。以 tf 函数为例&#xff0c;在输入分子与分母系数后&#xff0c;理…...

【新手指南】pyqt可视化远程部署deepseek7B蒸馏版模型

本地效果&#xff1a;&#xff08;如果想做这个的本科毕设&#xff0c;建议美化界面。&#xff09; 总结&#xff1a;MobaXterm远程连接autodl服务器&#xff0c;在MobaXterm上利用X11转发使pyqt可视化页面在自己的电脑上展现出来。 1. 官网下载MobaXterm MobaXterm free Xse…...

大语言模型在患者交互任务中的临床使用评估框架

An evaluation framework for clinical use of large language models in patient interaction tasks An evaluation framework for clinical use of large language models in patient interaction tasks | Nature Medicine 2025.1 收到时间&#xff1a;2023 年 8 月 8 日 …...

DeepSeek-V3 技术报告解读

DeepSeek火了有一段时间了&#xff0c;春节假期因为没时间&#xff0c;所以关于deepseek大模型一系列的技术报告一直没看&#xff0c;新年开工后&#xff0c;抽一点时间把之前的坑补起来&#xff0c;关于DeepSeek-V3技术报告的解读已经有很多了&#xff0c;但我相信不同的人去读…...

suricata安装测试

系统版本为Ubuntu 22.04.4。 # cat /etc/issue Ubuntu 22.04.4 LTS \n \l # # uname -a Linux logging 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64 x86_64 x86_64 GNU/Linux添加suricata的apt库。 # add-apt-repository pp…...

Java反射简单理解

Java反射是指在运行时&#xff08;runtime&#xff09;能够动态地获取类的内部信息&#xff0c;并能直接操作类的属性和方法的一种机制。通过反射&#xff0c;开发者可以在运行时检查类、接口、字段和方法&#xff0c;并且可以调用这些方法和访问这些字段&#xff0c;而无需在编…...

WPS Word中英文混杂空格和行间距不一致调整方案

文章目录 问题1&#xff1a;在两端对齐的情况下&#xff0c;如何删除参考文献&#xff08;英文&#xff09;的空格问题2&#xff1a;中英文混杂行间距不一致问题问题3&#xff1a;设置中文为固定字体&#xff0c;设置西文为固定字体参考 问题1&#xff1a;在两端对齐的情况下&a…...

探秘沃尔什-哈达玛变换(WHT)原理

沃尔什-哈达玛变换&#xff08;WHT&#xff09;起源 起源与命名&#xff08;20世纪早期&#xff09; 数学基础&#xff1a;该变换的理论基础由法国数学家雅克哈达玛&#xff08;Jacques Hadamard&#xff09;在1893年提出&#xff0c;其核心是哈达玛矩阵的构造。扩展与命名&…...

优雅拼接字符串:StringJoiner 的完整指南

在Java开发中&#xff0c;字符串拼接是高频操作。无论是日志格式化、构建CSV数据&#xff0c;还是生成动态SQL&#xff0c;开发者常需处理分隔符、前缀和后缀的组合。传统的StringBuilder虽然灵活&#xff0c;但代码冗余且易出错。Java 8推出的StringJoiner类&#xff0c;以简洁…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

排序算法总结(C++)

目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指&#xff1a;同样大小的样本 **&#xff08;同样大小的数据&#xff09;**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...