• 20201005


    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分.

  • 相关阅读:
    Python3-2020-测试开发-7- 元组tuple
    Python3-2020-测试开发-6- 列表list
    面向对象三大特性之多态、封装代码注释部分
    抽象类和接口类代码注释部分
    面向对象三大特性:继承,多态,封装之继承代码注释部分
    面向对象之类的组合代码注释部分
    面对想三大特性之多态,封装
    面向对象三大特性:继承,多态,封装之继承
    类与对象的命名空间
    面向对象和类
  • 原文地址:https://www.cnblogs.com/scy-fisheep/p/13769864.html
Copyright © 2020-2023  润新知