zoukankan      html  css  js  c++  java
  • Codeforces 460 DE 两道题

    D Little Victor and Set

    题目链接

    构造的好题。表示是看了题解才会做的。

    假如[l,r]长度不超过4,直接暴力就行了。

    假如[l,r]长度大于等于5,那么如果k = 1,显然答案应该是l;如果k=2,可以找到a^(a+1)=1;如果k=3,首先只取两个就得到一个下界为1,但是可能出现为0的情况,下面再仔细讨论。如果k>=4,可以找到两组a^(a + 1) = 1,所以答案是0。

    现在剩下的问题就是如何判断k=3的情况答案能否为0了。答案为0时我们只有可能取了3个数,设它们为x,y,z,并且不妨设有l <= z < y < x <= r。

    我们考虑x的最高位非零位。这一位y必须是1,z必须是0,因为y > z并且它们的异或和为0。考虑接下来一位,假如z的这一位为0,我们可以将x,y的上一位变为0,这一位都变为1。注意到x,y,z仍然是满足条件的,因为x变小了,而z变大了,而x > y > z依然满足。最后,我们发现z的第一个非零位。我们将z后面的位全部填为1,x,y的前一位都为1,当前位x必为1,y必为0,后面我们将x全部填为0,y全部填为1。显然,x不会变大,z不会变小,并且x > y > z仍然满足。于是当且仅当存在这样构造的x,y,z时我们能够找到一组符合题意的x,y,z。我们注意到z = 2^k - 1,于是直接枚举z就行了。

    E Roland and Rose

    题目链接

    我们能够证明一定存在一种最优方案,其所选点均在可用点集的凸包上。具体这么证明:先考虑去掉方案中的某个点A,最后把它加入,这时我们要让它和之前选出的(n-1)个点的距离平方和最大。将这个距离写出来变形发现可转化成最大化点A到某个定点B的距离(具体就不说了)。然后,我们就需要证选凸包上的点一定不亏。假如我们选的A是在凸包内而不是凸包上,注意到凸包上一定存在某个点C满足AB与AC的夹角不小于(frac{pi}{2})。因为假如都是锐角,点A就在凸包上,与前面的假设矛盾。

    这样,我们发现只需要考虑凸包上的点。对这题来说这题凸包上的点数是很少的,直接暴力枚举选择的方案就行了。

  • 相关阅读:
    5.6 Go 常用函数
    5.5 Go defer
    5.4 Go 闭包
    5.3 Go 匿名函数
    5.2 Go 包与函数
    python 通过pytz模块进行时区的转换,获取指定时区的时间
    前端在js中获取用户所在地区的时间与时区
    Python2 指定文件编码格式需要注意的地方
    linux 使用进程管理工具 supervisor
    Python 私有变量中两个下划线 _ _item 与 一个下划线的区别 _item
  • 原文地址:https://www.cnblogs.com/jasonyu/p/cf_460_d_e.html
Copyright © 2011-2022 走看看