THUPC2017 看题总结
#2402. 「THUPC 2017」天天爱射击 / Shooting
果题。
求当前子弹能会使多少块木板损坏,发现因为木板会随着子弹数目的增加而更加容易损坏,故此询问具有单调性。
而后又发现可以离线,考虑整体二分。
每次用一个(solve(x,y,l,r))表示当前处理:编号为(x)到(y)的子弹,编号为(l)到(r)的木板。
把这些所有子弹都扔到树状数组里然后每个木板查询区间和看够不够用就好了。
一定要记得存在木板从始至终都没损坏的情况所以循环退出的时候需要特判。
#2404. 「THUPC 2017」体育成绩统计 / Score
这大模拟题....绝了~
#2405. 「THUPC 2017」玩游戏 / Game
这题就非常有意思了。
不难发现所有的情况肯定能通过以下方式构造出一组解:
每次贪心的放最大的就行了,证明显然啊.....
这样的话就只需要判一下是不是这两个数的和(Sum)存在一个数(n)使得(frac{n*(n+1)}{2}=Sum)即可。
#2409. 「THUPC 2017」小 L 的计算题 / Sum
首先我们发现要求的东西非常整齐,以为是什么神仙(dp)啥的。
无果.....
想多项式吧,我们考虑能不能弄出这么一个生成函数使得(f_i)就是这个生成函数的第(i)项。
不妨设其为(F)。
那么显然的,这个生成函数就可以被表示成:
[F = sumlimits_i sumlimits_{j=1}^n a_j^ix^i
]
考虑把(a)序列单独枚举:
[F = sumlimits_{j=1}^n sumlimits_i a_j^ix^i
]
不难发现,后面的这个(sumlimits_i a_j^i x^i)可以逆麦克劳林展开,变成(frac{1}{1-a_jx})。
所以原式就变成了
[F = sumlimits _ {j = 1} ^ n frac{1} {1 - a _ j x}
]
这东西直接多项式求逆然后分治(NTT)搞一搞就好了嘛
会(T)........
然后怎么办呢?
原式其实等价于:
[F = sumlimits _ {j = 1} ^ n 1 + frac{a _ j x} {1 - a _ j x} \
F = n - sumlimits _ {j = 1} ^ n (ln(1 - a _ j x))' \
F = n - (sumlimits _ {j = 1} ^ n ln(1 - a _ j x))'\
F = n - ln(prodlimits _ {j = 1} ^ n (1 - a _ j x))
]
后面的东西分治起来就相当快了
然后多项式取(ln)就好了。