[CTSC2018]假面
题目 传送门 to UOJ 传送门 to usOJ 思路 数据范围其实真的挺小的…… 对于每一个人,存储剩余血量为 i i i 的概率,总复杂度才 O ( q m ) \mathcal O(qm) O ( q m ) 。 热值乘以质量 在计算结界的时候,竟然不需要使用多项式进行乘法?为什么要用模数 998244353 998244353 9 9 8 2 4 4 3 5 3 骗人感情? 直接用背包,然后对于每一个人做一次退背包,本质是退去一个 ( d i e + a l i v e ⋅ x ) (die+alive\cdot x) ( d i e + a l i v e ⋅ x ) 的项。其中, d i e die d i e 表示已经死掉的概率, a l i v e alive a l i v e 则正相反。要小心 d i e = 0 die=0 d i e = 0 的情况! 我最开始认为这里要用 N T T NTT N T T 乱搞,没想到啊……然后就爆零了…… 时间复杂度也才 O ( c n 2 log P + q m ) \mathcal O(cn^2\log P+qm) O ( c n 2 lo g P + q m ) ,五秒七险过六秒时限。 另外:我求逆元的时候,竟然放在了循环内部……放在循环外会更快,不会那么险。 代码 # include <cstdio> #