• Codeforces Global Round 1


    Codeforces Global Round 1

    题解:The Editorial of the First Codeforces Global Round

    A:其实mod 2计算一下就行了

    B:删掉最长的k-1段,sort

    C:

    x是a的二进制最高位,

    考虑对于a!=2^(x+1)-1,一定可以找到一个c<a,使得c&a=0,并且c xor a=2^(x+1)-1,那么gcd就是2^(x+1)-1了。已经最大

    对于a=2^(x+1)-1,gcd(a&b,a^b)=gcd(b,a-b)=gcd(a,b),所以,gcd最大是a的最大因数(除了自己),并且由于b<a,把b取到这个因数即可。

    D:

    发现,对于三个[x,x+1,x+2],其实贡献等价于:[x,x,x],[x+1,x+1,x+1],[x+2,x+2,x+2]

    所以,不妨对于形如[x,x+1,x+2]的只保留小于等于2个即可

    设f[i][t1][t2]表示,前i个,有t1个[i-1,i,i+1],t2个[i,i+1,i+2]的最大值

    那么枚举一个合法的t3,就是[i+1,i+2,i+3]的个数,对于剩下的i+1,直接[i+1,i+1,i+1]尽量拼凑即可。(因为后面不会再用到i+1了)

    转移到f[i+1][t2][t3]

    (这样设的好处是,可以明确得到需要决策的剩下个数,并且对于i以后不会再考虑,所以[i,i,i]直接放就可以了)

    E:

    这种:c(i)'=c(i-1)+c(i+1)-c(i)的相邻两项关系,我们联想到,差分数组也是相邻两项的关系

    尝试一下,可以得到:

    就是发现其实就是差分数组的临项交换

    那么,可以转化过去,等价于,s1=t1并且差分数组排序后相等。

    F:

    (比赛时根本就没看到这里。。。其实题目并不难)

    就是给出dfs序,在dfs序在[l,r]的叶子中找到距离v最小的距离

    两种思路:

    1.发现,如果固定1为根,那么每个点距离1的dis放进线段树,就是一个区间求min操作

    根不定?离线+换根!

    2.根不定?在线+分类讨论子树关系,相应的加上到根的距离或者减去到根的距离(大概区间会分成三段)

    G:

    分类讨论的博弈论(具体细节看题解)

    首先发现初始白点可以等价变成4个空点的事实。然后图上就都是空点了。

    发现这是树上的“三子棋”,规模比较小,手玩之后从度数考虑下。

    1.如果有一个点有大于等于4的度数,那么先手必胜

    2.如果一个点度数为3,并且两个儿子度数都不小于2,那么必胜

      把这种情况也考虑到。

      进一步,如果有大于等于3个有3个度数的点,那么也是先手必胜。

    3.所以剩下的只用考虑小于等于2个3度数的点了

      ①一个3度数:就是2的考虑方法。

      ②两个3度数:如果存在一个子图呈“骨头”形,并且这个“骨头”总点数是奇数,那么先手必胜

    4.剩下的都是平局(什么**游戏,后手必不胜啊。。)

    H:

    咕咕咕

  • 相关阅读:
    C# 微信 生活助手 空气质量 天气预报等 效果展示 数据抓取 (二)
    2014年个人总结
    是去是留?这是个问题
    电信限制ip的解决方案
    机械学习
    mac-mysql
    如何使用代码生成工具
    如何使用自定义表单和自定义流程
    test
    编程小问题001
  • 原文地址:https://www.cnblogs.com/Miracevin/p/10355962.html
Copyright © 2020-2023  润新知