zoukankan      html  css  js  c++  java
  • KEYENCE Programming Contest 2021

    D

    对于一个序列,相同的对数有(2{2^{N-1}choose 2}),不同的对数有((2^{N-1})^2)
    假设选了(len)个序列,那么应该满足:

    [egin{aligned} lencdot 2{2^{N-1}choose 2}=ncdot {2^Nchoose 2}\ lencdot (2^{N-1})^2=mcdot {2^Nchoose 2} end{aligned}]

    通过移项可得:(n:m=2^{N-1}-1:2^{N-1})

    (n=2^{N-1}-1)(m=2^{N-1})带入上式,会得到(len=2^{N}-1),故这是(len)的下界(同时也说明(2^{N}-1|len)

    我们通过构造一种方式,证明答案可以为(2^{N}-1)

    (i)个序列((i=1sim 2^N-1)
    (j)位置上((j=0sim 2^N-1)),若( ext{popcount} (iAnd j))为偶数则填'A',为奇数则填'B'
    对于任意(N)长度的二进制,(i)仅缺失了(0),故容易证明这个构造满足(n=2^{N-1}-1)(m=2^{N-1})

    E

    snuke在当前轮直接选取,那么状态会非常不好记录
    我们保留snuke在之前轮,选择放弃暂时不选的次数,然后等蚂蚁走到这来了再选
    虽然这个跟原游戏不同,但显然其不会优于最优解,也包含最优解

    (f_{l,r,k})((l,r))全部被选了,snuke还可以选(k)次的最优解

    两种转移方式(填表法):

    • 满足(k>0),那么snuke可以选择(l)(r),则用(f_{l-1,r,k-1}+a_{l})(f_{l,r+1,k-1}+a_{r})转移
    • 目前snuke不选择,则对手选择
      那么用(f_{l-1,r,k+1})(f_{l,r+1,k+1})转移(按照题意,这里的转移是固定的,取(a_l,a_r)中较大的一个)

    code

    F

    感觉讲起来比较麻烦,就不写题解了...
    code

  • 相关阅读:
    sqlserver获取当前id的前一条数据和后一条数据
    C#实现测量程序运行时间及cpu使用时间
    类库dll引用不成功问题
    合并相同字段
    Android之来历
    XML and JSON 验证
    特殊符号
    git 使用
    格式化字符串:金额
    grunt + sass 使用记录
  • 原文地址:https://www.cnblogs.com/Grice/p/14289881.html
Copyright © 2011-2022 走看看