...

  • 题目:
  • 题意:
  • 分析:
  • 代码:

题目:

传送门


题意:

有mmm种物品,数量无限,用(ai,bi,xi)(a_i,b_i,x_i)(ai​,bi​,xi​)三元组来形容物品,xix_ixi​表示我们选出该种物品多少个
对答案的贡献为∏i=1n1+aixi2+bixi\prod_{i=1}^n1+a_ix_i^2+b_ix_i∏i=1n​1+ai​xi2​+bi​xi​
求所有方案的贡献和


分析:

设fi,jf_{i,j}fi,j​表示考虑到第iii位已经考虑完前jjj种物品
会有fi,j=∑k=0ifi−k,j−1∗(ajk2+bjk+1)f_{i,j}=\sum_{k=0}^if_{i-k,j-1}*(a_jk^2+b_jk+1)fi,j​=∑k=0i​fi−k,j−1​∗(aj​k2+bj​k+1)
此时复杂度为O(n2m)O(n^2m)O(n2m)
我们不妨将方程逆过来推
fi,j∗(ajk2+bjk+1)→fi+k,j+1f_{i,j}*(a_jk^2+b_jk+1)→f_{i+k,j+1}fi,j​∗(aj​k2+bj​k+1)→fi+k,j+1​
式子的左边展开得
fi,j∗ajk2+fi,j∗bjk+fi,jf_{i,j}*a_jk^2+f_{i,j}*b_jk+f_{i,j}fi,j​∗aj​k2+fi,j​∗bj​k+fi,j​
我们考虑将三个单项式分开求出最后合并
阔以运用前缀和的芝士,将k2,k,1k^2,k,1k2,k,1分别用三遍,两遍,一遍前缀和来代替这个系数
其他照搬式子
复杂度就来到优秀的O(nm)O(nm)O(nm)了
当然还有更秀的生成函数,我不会,爬了


代码:

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#define LL long long
#define mo 998244353
using namespace std;
inline LL read() {LL d=0,f=1;char s=getchar();while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();}while(s>='0'&&s<='9'){d=d*10+s-'0';s=getchar();}return d*f;
}
LL a[1005],b[1005];
LL sum1[10005],sum2[10005],sum3[10005],f[10005][1005];
int main()
{LL m=read();for(LL i=1;i<=m;i++) a[i]=read(),b[i]=read();f[0][0]=1;for(LL j=0;j<m;j++){memset(sum1,0,sizeof(sum1));memset(sum2,0,sizeof(sum2));memset(sum3,0,sizeof(sum3));for(LL i=0;i<=10000;i++) {(sum1[i]+=f[i][j])%=mo;(sum2[i+1]+=f[i][j]*b[j+1]%mo)%=mo;(sum3[i+1]+=f[i][j]%mo*a[j+1]%mo)%=mo;(sum3[i+2]+=f[i][j]%mo*a[j+1]%mo)%=mo;}for(LL i=1;i<=10000;i++) (sum1[i]+=sum1[i-1])%=mo;for(LL i=1;i<=10000;i++) (sum2[i]+=sum2[i-1])%=mo;for(LL i=1;i<=10000;i++) (sum2[i]+=sum2[i-1])%=mo;for(LL i=1;i<=10000;i++) (sum3[i]+=sum3[i-1])%=mo;for(LL i=1;i<=10000;i++) (sum3[i]+=sum3[i-1])%=mo;for(LL i=1;i<=10000;i++) (sum3[i]+=sum3[i-1])%=mo;for(LL i=0;i<=10000;i++) f[i][j+1]=(sum1[i]+sum2[i]+sum3[i])%mo;}LL q=read();while(q--) printf("%lld\n",f[read()][m]);return 0;
}

Wannafly挑战赛24D-无限手套【dp】【数学】相关推荐

  1. Wannafly挑战赛24 无限手套(生成函数)

    无限手套 每种宝石的生成函数为∑n≥0xn(ain2+bin+1)对其进行化简∑n≥0xn+∑n≥0binxn+∑n≥0ain2xn11−x+bix(1−x)2+aix(1+x)(1−x)3最后答案∏ ...

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

    正题 题目链接:https://ac.nowcoder.com/acm/contest/186/D 题目大意 m m m个二元组 ( a i , b i ) (a_i,b_i) (ai​,bi​),对 ...

  3. Wannafly挑战赛24 D 无限手套

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  4. 【nowcoder 186D / 19153】无限手套(DP)(生成函数)

    无限手套 题目链接:nowcoder 186D / 19153 题目大意 有 n 种物品,每个物品有一个权值 a,b,你选 x 个的费用就是 ax^2+bx+1,然后总费用是每类物品的费用的乘积. 然 ...

  5. Wannafly挑战赛24

    Wannafly挑战赛24 题目连接 https://www.nowcoder.com/acm/contest/186#question A.石子游戏 题解 注意到当石子个数为偶数的时候,每回合都会减 ...

  6. Wannafly挑战赛22游记

    Wannafly挑战赛22游记 幸运的人都是相似的,不幸的人各有各的不幸. --题记 A-计数器 题目大意: 有一个计数器,计数器的初始值为\(0\),每次操作你可以把计数器的值加上\(a_1,a_2 ...

  7. [Wannafly挑战赛2D-Delete]最短路

    [Wannafly挑战赛2D-Delete]最短路 题目描述 给定一张 n 个点,m 条边的带权有向无环图,同时给定起点 S 和终点 T ,一共有 q 个询问,每次询问删掉某个点和所有与它相连的边之后 ...

  8. Wannafly挑战赛19

    Wannafly挑战赛19 A. 队列Q 需要支持把一个元素移到队首,把一个元素移到队尾,移到队首就直接放到队首前面那个位置,原位置标为0,队尾同理. #include <bits/stdc++ ...

  9. Wannafly挑战赛18

    Wannafly挑战赛18 A. 序列 先考虑暴力,相邻两个树之间乘上给定的三种数,递推出下一个位置填什么,然后再check一下,最后一位是否为1即可.这样时间显然不行,但是给我们一种思路,就是中间的 ...

最新文章

  1. 每日一皮:在同一个项目上工作2年的样子...
  2. python手机版怎么用-如何优雅的在手机上进行Python编程
  3. NIO:channel、buffer、状态变量、socket、charset
  4. 注册jdbc驱动程序的三种方式
  5. 新浪宣布2010年第四季度业绩 盘后跌4%
  6. 模拟银行自助终端系统
  7. if快还是switch快?解密switch背后的秘密
  8. java的值排序总结
  9. 列名 userid 不明确。 表结构_SQL-Server(三)表的创建和操作
  10. Remoting例子-使用配置文件
  11. Screen Saver Exporter for Mac(屏幕保护程序导出程序)
  12. 定义类,super的使用,super的使用
  13. 工程项目管理(EPC)系统全套流程详细解读(含流程图)
  14. 【unity 保卫星城】--- 开发笔记(Demo演示篇)
  15. robocup3d 发布比赛版本
  16. android手机文件误删除恢复软件,被误删除的文件用安卓手机数据恢复软件怎么找回...
  17. 遭遇裁员,如何渡过心理危机?
  18. 《摩诃般若波罗蜜多心经》 玄奘 译
  19. 上海计算机一级ps教程,2017年计算机一级考试PS学习妙招
  20. 使用DM数据迁移工具将Excel数据导入到达梦数据库

热门文章

  1. 在一家信息安全公司工作是什么感受?
  2. hdfs清理回收站命令(参考)
  3. Neptune CHT-C助力零束打造智舱界王者
  4. 关于几何学发展的三阶段
  5. android安全开发_现代android安全开发
  6. SSO中的Pattern
  7. Unity开发游戏--2D坦克大战(一)
  8. 小牛叔讲Python第10章:化繁为简的推导式
  9. Uboot SPL的Boot模式选择(从MMC切换到SPI启动)
  10. STM32 BOOT模式配置以及作用