果题。数组
求当前子弹能会使多少块木板损坏,发现由于木板会随着子弹数目的增长而更加容易损坏,故此询问具备单调性。函数
然后又发现能够离线,考虑总体二分。spa
每次用一个$solve(x,y,l,r)$表示当前处理:编号为$x$到$y$的子弹,编号为$l$到$r$的木板。游戏
把这些全部子弹都扔到树状数组里而后每一个木板查询区间和看够不够用就行了。it
必定要记得存在木板从始至终都没损坏的状况因此循环退出的时候须要特判。循环
这大模拟题....绝了~im
这题就很是有意思了。统计
不难发现全部的状况确定能经过如下方式构造出一组解:总结
每次贪心的放最大的就好了,证实显然啊.....查询
这样的话就只须要判一下是否是这两个数的和$Sum$存在一个数$n$使得$\frac{n*(n+1)}{2}=Sum$便可。
首先咱们发现要求的东西很是整齐,觉得是什么神仙$dp$啥的。
无果..... 想多项式吧,咱们考虑能不能弄出这么一个生成函数使得$f_i$就是这个生成函数的第$i$项。
不妨设其为$F$。
那么显然的,这个生成函数就能够被表示成: $$ F = \sum\limits_i \sum\limits_{j=1}^n a_j^ix^i $$ 考虑把$a$序列单独枚举: $$ F = \sum\limits_{j=1}^n \sum\limits_i a_j^ix^i $$ 不难发现,后面的这个$\sum\limits_i a_j^i x^i$能够逆麦克劳林展开,变成$\frac{1}{1-a_jx}$。
因此原式就变成了 $$ F = \sum\limits _ {j = 1} ^ n \frac{1} {1 - a _ j x} $$ 这东西直接多项式求逆而后分治$NTT$搞一搞就行了嘛
会$T$........
而后怎么办呢?
原式其实等价于: $$ F = \sum\limits _ {j = 1} ^ n 1 + \frac{a _ j x} {1 - a _ j x} \ F = n - \sum\limits _ {j = 1} ^ n (ln(1 - a _ j x))' \ F = n - (\sum\limits _ {j = 1} ^ n ln(1 - a _ j x))'\ F = n - ln(\prod\limits _ {j = 1} ^ n (1 - a _ j x)) $$ 后面的东西分治起来就至关快了
而后多项式取$ln$就行了。