T1
首先,老石子了。每个人要求用自己最优的解法去求最后输的是谁?(这TMD不是有病吗?),第一眼看到题的时候,感觉用手打表并不容易,但后来想想这其实是一道比较综合的博弈论的问题。大家所熟知的经典博弈论是给你一堆然后求最优的解。
顺便吐槽一下出题人的语文水平,看到题解抑或我当场就蒙逼了。
既然要解决博弈论的问题,那我们就需要先了解一下什么是博弈论。
博弈论
T2
又是一道以游戏为背景的题,不难看出来我们可以用贪心去做,我在考场上想用暴力过,但是无奈写挂了。考完有一个人跟我想法一样,得了三十分。hai~~,太难了。
我暴力就想sort排序后,从大到小排列一遍,然后发现比自己小就吃,吃完再返回队尾继续吃。
正解:
一个显然的贪心是每次吃当前能吃的体积最大的鱼。
考虑直接模拟这个过程,可能会吃(N)次鱼。我们考虑当前不能吃的体积最小的鱼,显然只有我们的体积超过了这条鱼,我们的可选集合才会有变化,如果这条鱼的体积大于等于我们的目标,那我们只需要计算现有的集合需要吃几条能达到目标即可。于是,我们每一步需要做的就是对于确定的数字集合,求出使得和达到某个值的最少步数即可,由于可选的数字是连续的,在线段树上二分即可。
接下来我们来分析数字范围变化的次数。考虑我们当前和为(A),不能选的最小体积是(B)(显然(B>A)),我们在选出一些数字之后,得到(A+x>B),接着我们得到了选不到的最小体积(C),我们再次二分会得到(A+x+y>C),注意到,(y≥B),也就是说,(A+x+y)≥(A+x+B)>(A+B)>(A+A),于是,我们在两次二分之后,手里的和至少翻倍,所以我们只需要(log)次就一定能得到答案。
时间复杂度(O(Qlog()N(+)Q()logW))
T3
暴力(其实也不算),就是枚举两个不互质的数的数然后(gcd)后算出对答案的贡献,两个互质的数直接相加即可。 得分:40.
T4
暴力直接敲一遍快速幂和高精度即可,虽然考场没写但核心其实还是挺好想的。最后用(dp)优化一下即可。 得分:50分.