Wannafly挑战赛24D-无限手套【dp,生成函数】

正题

题目链接:https://ac.nowcoder.com/acm/contest/186/D


题目大意

mmm个二元组(ai,bi)(a_i,b_i)(ai,bi),对于一个序列xxx的贡献是∏i=1n(aixi2+bixi+1)\prod_{i=1}^n(a_ix_i^2+b_ix_i+1)i=1n(aixi2+bixi+1)
qqq次询问给出nnn求在xi≥0x_i\geq 0xi0∑i=1nxi=n\sum_{i=1}^nx_i=ni=1nxi=n时的情况下所有序列的贡献和。


解题思路

dpdpdp思路

先列出简单的dpdpdp方程fi,j=∑k=0jfi,j−k∗(aik2+bik+1)f_{i,j}=\sum_{k=0}^jf_{i,j-k}*(a_ik^2+b_ik+1)fi,j=k=0jfi,jk(aik2+bik+1)

然后发现这个每次转移时加的值是∑k=0jfi,j−k∗(2aik+ai+bi)\sum_{k=0}^jf_{i,j-k}*(2a_ik+a_i+b_i)k=0jfi,jk(2aik+ai+bi)
然后这个加的值每次转移时加的值是∑k=0jfi,j−k∗2ai\sum_{k=0}^jf_{i,j-k}*2a_ik=0jfi,jk2ai
开几个差分变量统计即可。
时间复杂度O(nm+q)O(nm+q)O(nm+q)

OGFOGFOGF思路

阿巴阿巴这个我一点都不会,大部分都是靠幂炜大爷的指点的

每个物品是一个∑i≥0xi(ai2+bi+1)\sum_{i\geq 0}x^i(ai^2+bi+1)i0xi(ai2+bi+1)的一个生成函数,然后化一下
a∑i≥0xii2+b∑i≥0xii+∑i≥0xia\sum_{i\geq 0}x^ii^2+b\sum_{i\geq 0}x^ii+\sum_{i\geq 0}x^iai0xii2+bi0xii+i0xi
最后一个是11−x\frac{1}{1-x}1x1就不多解释了,化一下前面两个
S=∑i≥0xii2,xS=∑i≥1xi+1i2S=\sum_{i\geq 0}x^ii^2,xS=\sum_{i\geq 1}x^{i+1}i^2S=i0xii2,xS=i1xi+1i2
(1−x)S=∑i≥1xi(i2−(i−1)2)=2∗∑i≥1xii−∑i≥0xi(1-x)S=\sum_{i\geq 1}x^{i}(\ i^2-(i-1)^2\ )=2*\sum_{i\geq 1}x^i i-\sum_{i\geq 0}x^i(1x)S=i1xi( i2(i1)2 )=2i1xiii0xi
然后前面那个我们同理T=∑i≥0xii,xT=∑i≥1xi+1iT=\sum_{i\geq 0}x^ii,xT=\sum_{i\geq 1}x^{i+1}iT=i0xii,xT=i1xi+1i
(1−x)T=∑i≥1xi=x1−x,T=x(1−x)2(1-x)T=\sum_{i\geq 1}x^{i}=\frac{x}{1-x},T=\frac{x}{(1-x)^2}(1x)T=i1xi=1xx,T=(1x)2x
代回去
(1−x)S=2x(1−x)2−x(1−x)=2x−x(1−x)(1−x)2=x(x+1)(1−x)2(1-x)S=\frac{2x}{(1-x)^2}-\frac{x}{(1-x)}=\frac{2x-x(1-x)}{(1-x)^2}=\frac{x(x+1)}{(1-x)^2}(1x)S=(1x)22x(1x)x=(1x)22xx(1x)=(1x)2x(x+1)
S=∑i≥0xii2=x(x+1)(1−x)3,∑i≥0xii=1(1−x)2S=\sum_{i\geq 0}x^ii^2=\frac{x(x+1)}{(1-x)^3}\ \ ,\ \ \ \sum_{i\geq 0}x_ii=\frac{1}{(1-x)^2}S=i0xii2=(1x)3x(x+1)  ,   i0xii=(1x)21
之前那个式子就可以变成
ax(x+1)(1−x)3+bx(1−x)2+11−x\frac{ax(x+1)}{(1-x)^3}+\frac{bx}{(1-x)^2}+\frac{1}{1-x}(1x)3ax(x+1)+(1x)2bx+1x1
然后展开就成了
1+(a+b−2)x+(a−b+1)x2(1−x)3\frac {1+(a+b-2)x+(a-b+1)x^2}{(1-x)^{3}}(1x)31+(a+b2)x+(ab+1)x2
然后所有的乘起来,因为只有三个系数,所以可以暴力乘。

答案就是乘积的生成函数中xnx^nxn的系数,考虑如何求。

我们已经处理出了一个fff数组,∑j≥0xifi(1−x)3m\frac{\sum_{j\geq 0}x^if_i}{(1-x)^{3m}}(1x)3mj0xifi
1(1−x)k=(∑i≥0xi)k=∑i≥0xi(k+i−1i−1)\frac{1}{(1-x)^k}=(\sum_{i\geq 0}x^i)^k=\sum_{i\geq 0}x^i\binom{k+i-1}{i-1}(1x)k1=(i0xi)k=i0xi(i1k+i1)
∑j≥0xifi(1−x)3m=∑j≥0xifi∗∑i≥0xi(3m+i−1i−1)\frac{\sum_{j\geq 0}x^if_i}{(1-x)^{3m}}=\sum_{j\geq 0}x^if_i*\sum_{i\geq 0}x^i\binom{3m+i-1}{i-1}(1x)3mj0xifi=j0xifii0xi(i13m+i1)
然后就可以卷积了,xnx_nxn的系数就是
∑i=0nfn−i(3m+i−1i−1)\sum_{i=0}^nf_{n-i}\binom{3m+i-1}{i-1}i=0nfni(i13m+i1)

时间复杂度O((q+m)n)O(\ (q+m)n\ )O( (q+m)n )


codecodecode

dpcodedp\ \ codedp  code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=1100,XJQ=998244353;
ll m,q,n,a[N],b[N],f[N][11000];
int main()
{scanf("%lld",&m);f[0][0]=1;for(ll i=1;i<=m;i++){scanf("%lld%lld",&a[i],&b[i]);ll tmp1=0,tmp2=0,tmp3=0,sum=0;for(ll j=0;j<1e4;j++){sum=(sum+tmp2+tmp3+f[i-1][j])%XJQ;f[i][j]=sum;tmp2=(tmp2+tmp1)%XJQ;tmp1=(tmp1+2*f[i-1][j]%XJQ*a[i]%XJQ)%XJQ;tmp3=(tmp3+(b[i]+a[i])*f[i-1][j])%XJQ;}}scanf("%lld",&q);while(q--){scanf("%lld",&n);printf("%lld\n",f[m][n]);}return 0;
}

OGFcodeOGF\ \ codeOGF  code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=4e4+10,P=998244353;
ll n,m,q,tot,fac[N],inv[N],f[N];
ll C(ll n,ll m)
{return fac[n]*inv[m]%P*inv[n-m]%P;}
int main()
{scanf("%lld",&m);inv[1]=f[0]=fac[0]=inv[0]=1;for(ll i=2;i<=4e4;i++)inv[i]=(P-P/i)*inv[P%i]%P;for(ll i=1;i<=4e4;i++)fac[i]=fac[i-1]*i%P,inv[i]=inv[i-1]*inv[i]%P; for(ll i=1;i<=m;i++){ll a,b;scanf("%lld%lld",&a,&b);ll A=(a-b+1+P)%P,B=(a+b-2+P)%P;tot+=3;for(ll j=1e4;j>=0;j--){if(j>1)(f[j]+=f[j-2]*A%P)%=P;if(j>0)(f[j]+=f[j-1]*B%P)%=P;}}scanf("%lld",&q);while(q--){scanf("%lld",&n);ll ans=0;for(ll i=0;i<=n;i++)(ans+=C(i+tot-1,tot-1)*f[n-i]%P)%=P;printf("%lld\n",ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320170.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SCF: 简单配置门面

Simple Configuration Facade, 简写为 SCF。是 代码 和 外部配置 (properties文件, 环境变量&#xff0c;系统/命令行参数, yaml文件, 等等)之间的一层抽象. 命名上和另一个著名组件slf4j (Simple Logging Facade for Java)相似, 在配置领域的地位也和slf4j &#xff08;.NET可…

字符串(AC自动机(fail tree))

传送门 注意&#xff1a;注释中的那段代码是不能用的 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<queue> using namespace std; typedef long long ll; const int N2000010; struct Edge{int v,nxt;}ed…

武汉工程大学2020GPLT选拔赛(上)

比赛链接 A L1-1 I LOVE WIT 模拟&#xff0c;每个字母单独一行&#xff0c;前面的空格按规律输出。可以直接输出&#xff0c;也可以模拟过程 #include<bits/stdc.h> using namespace std; int main(){string s"I LOVE WIT";for(int i0;i<s.size();i){fo…

【矩阵乘法】【倍增】美食家(luogu 6772)

美食家 题目大意 给你一个有向图&#xff0c;边权为经过所需时间 每个点有一个点权&#xff0c;有些点还有有特殊的点权 当你到达一个点后&#xff0c;可以获得该点的点权&#xff08;重复经过可以重复获得&#xff0c;但不能停留&#xff09;&#xff0c;若在某个时间到某个…

.net core实践系列之短信服务-为什么选择.net core(开篇)

前言从今天我将会写.net core实战系列&#xff0c;以我最近完成的短信服务作为例子。该系列将会尽量以最短的时间全部发布出来。源码也将优先开源出来给大家。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS.NET CORE简介ASP.NET Core 是一个跨平台的高性能开源…

P3172-[CQOI2015]选数【dp,容斥】

正题 题目链接:https://www.luogu.com.cn/problem/P3172 题目大意 求有多少个长度为NNN的值域在[L,R][L,R][L,R]这个区间的序列满足它们的gcdgcdgcd恰好是KKK。 解题思路 dpdpdp容斥思想 我们先让L⌊LK−1K⌋,R⌊RK⌋L\lfloor\frac{LK-1}{K}\rfloor,R\lfloor\frac{R}{K}\rfl…

博弈论总结

前言 本篇为博弈论总结&#xff0c;文章会按题目类型分类。 基础铺垫——必胜点和必败点的介绍 P点&#xff1a;必败点&#xff0c;换而言之&#xff0c;就是谁处于此位置&#xff0c;则在双方操作正确的情况下必败。 N点&#xff1a;必胜点&#xff0c;处于此情况下&#x…

牛客网【每日一题】5月8日题目精讲 codeJan与旅行

比赛链接&#xff1a; 文章目录题目描述题解&#xff1a;时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 codeJan 非常喜欢旅行。现在有 n 个城市排在一条线上&#xff0c;并…

.netcore consul实现服务注册与发现-集群完整版

一、Consul的集群介绍Consul Agent有两种运行模式&#xff1a;Server和Client。这里的Server和Client只是Consul集群层面的区分&#xff0c;与搭建在Cluster之上的应用服务无关&#xff0c; 以Server模式运行的Consul Agent节点用于维护Consul集群的状态&#xff0c;官方建议每…

【矩阵乘法】【倍增】WYC(luogu 3597)

WYC 题目大意 给你一个有向图&#xff0c;让你求图中的kkk短路&#xff08;非简单路径&#xff09; 输入样例# 6 6 11 1 2 1 2 3 2 3 4 2 4 5 1 5 3 1 4 6 3输出样例#1 4数据范围 1⩽n⩽40&#xff0c;1⩽m⩽1000&#xff0c;1⩽k⩽10181\leqslant n\leqslant 40&#xff…

匹配(树形DP)

传送门 题目描述&#xff1a; 有一张无向联通图 G⟨V,E⟩ &#xff0c;其中顶点数 |V|n &#xff0c;边数 |E|n−1 。求有多少种方案使得删边后残余图中的最大匹配数恰好为 m 的倍数。 题解&#xff1a; 这道题看起来是求最大匹配&#xff0c;其实关系不大&#xff0c;正解…

博弈论讲解(一)

常见的博弈论有巴什博弈&#xff0c;威佐夫博弈&#xff0c;尼姆博弈&#xff0c;斐波那契博弈等等&#xff0c;今天暂时讲几个 文章目录一.巴什博弈证明&#xff1a;代码二.威佐夫博奕结论&#xff1a;代码&#xff1a;三.环形博弈结论证明代码&#xff1a;一.巴什博弈 巴什博…

浅谈surging服务引擎中的rabbitmq组件和容器化部署

1、前言上个星期完成了surging 的0.9.0.1 更新工作&#xff0c;此版本通过nuget下载引擎组件&#xff0c;下载后&#xff0c;无需通过代码build集成&#xff0c;引擎会通过Sidecar模式自动扫描装配异构组件来构建服务引擎&#xff0c;而这篇将介绍浅谈surging服务引擎中的rabbi…

csp-j/s总结

文章目录csp-jcsp-s总结csp-j T1傻逼题(我是傻逼&#xff09;&#xff0c;手残把&打成整除了&#xff08;大样例还对了gg&#xff09; T2乱推&#xff0c;然后打了个O(n)O(n)O(n)&#xff0c;却WA了15分&#xff1f; T3看了看&#xff0c;修改不会相互影响&#xff1f;那不…

51nod1220-约数之和【莫比乌斯反演,杜教筛】

正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId1220 题目大意 给出nnn&#xff0c;求∑i1n∑j1nσ(i∗j)\sum_{i1}^n\sum_{j1}^n\sigma(i*j)i1∑n​j1∑n​σ(i∗j) 其中σ\sigmaσ表示约数和。 解题思路 首先有结论σ(i∗j)∑x∣i∑y∣j[gcd(x,y)1]…

CDQ分治与整体二分

首先说明&#xff0c;CDQ分治与整体二分都是离线算法 CDQ分治&#xff1a; 流程&#xff1a; 1.我们要解决一系列问题&#xff0c;这些问题一般包含修改和查询操作&#xff0c;可以把这些问题排成一个序列&#xff0c;用一个区间[L,R]表示。 2.分。递归处理左边区间[L,M]和…

博弈论讲解(二)

文章目录斐波那契博弈问题&#xff1a;结论证明&#xff1a;尼姆博奕(Nimm Game)问题&#xff1a;结论&#xff1a;证明&#xff1a;代码&#xff1a;公平组合博弈&#xff08;Impartial Combinatori Games&#xff09;理论知识&#xff08;1&#xff09;、若面临末状态者为获胜…

.net core实践系列之短信服务-架构设计

前言上篇《.net core实践系列之短信服务-为什么选择.net core&#xff08;开篇&#xff09;》简单的介绍了&#xff08;水了一篇&#xff09;.net core。这次针对短信服务的架构设计和技术栈的简析。源码地址&#xff1a;https://github.com/SkyChenSky/Sikiro.SMS为什么需要架…

【矩阵乘法】Matrix Power Series(poj 3233)

Matrix Power Series poj 3233 题目大意 给你一个矩阵A&#xff0c;让你求SAA2A3…AkS A A^2 A^3 … A^kSAA2A3…Ak 输入样例 2 2 4 0 1 1 1输出样例 1 2 2 3n⩽30,k⩽109,m<104,a∈A,a⩽32768n \leqslant 30,k \leqslant 10^9,m < 10^4,a\in A,a \leqslant32…

P3702-[SDOI2017]序列计数【矩阵乘法】

正题 题目链接:https://www.luogu.com.cn/problem/P3702 题目大意 nnn个不超过mmm的正整数&#xff0c;要求和是ppp的倍数且至少有一个质数。 解题思路 用总方案数减去只有非质数的方案数即可。 线性筛出所有质数&#xff0c;然后矩阵乘法转移即可。 时间复杂度O(mp3log⁡n…