AtCoder Beginner Contest 241

本文讨论了一种求解特定多项式乘积系数的方法,利用高斯消元技巧简化了背包问题,并指出在AI算法中,针对大规模数据,如何通过nlogm时间复杂度优化求解过程。重点在于利用Ai的互异性简化多项式表达式求解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ex - Card Deck Score

这题还比较有意思,设Fi(x)=∑j=0BjAjxj=1−AjBi+1xBi+11−AjxF_{i}(x)=\sum_{j=0}^{B_j}A_jx^j=\frac{1-A_j^{B_i+1}x^{B_{i+1}}}{1-A_jx}Fi(x)=j=0BjAjxj=1Ajx1AjBi+1xBi+1,答案显然就是[xm]∏i=1nFi(x)=[xm]1∏i=1n(1−Ajx)∏i=1n(1−AjBi+1xBi+1)[x^m]\prod_{i=1}^nF_i(x)=[x^m]\frac{1}{\prod_{i=1}^n(1-A_jx)}\prod_{i=1}^n(1-A_j^{B_i+1}x^{B_{i+1}})[xm]i=1nFi(x)=[xm]i=1n(1Ajx)1i=1n(1AjBi+1xBi+1)
考虑到n≤16n\le16n16所以后面的式子可以直接暴搜,问题是怎么快速求出前面那部分的某一项的系数,正常来说,由11−x=∑i=0∞xi\frac{1}{1-x}=\sum_{i=0}^\infty x^i1x1=i=0xi这个式子,前面那部分可以用一个完全背包来处理,但是这道题mmm会达到101810^{18}1018级别,背包没有前途,要考虑其他做法
发现题目里还有一个不容易被重视的条件,AiA_iAi互不相同,这意味着一定可以找到nnn个数cic_ici满足1∏i=1n(1−Ajx)=∑i=1nci1−Ajx\frac{1}{\prod_{i=1}^n(1-A_jx)}=\sum_{i=1}^n\frac{c_i}{1-A_j{x}}i=1n(1Ajx)1=i=1n1Ajxci,可以直接用高斯消元求出,然后就可以用nlog⁡mn\log mnlogm的时间复杂度求出某项系数了,时间复杂度为nlog⁡m2nn\log m2^nnlogm2n

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值