• Codeforces Round #796 (Div. 2) Solution Set


    没有打 div1,小失策。

    网断了,很脑残。

    开题顺序:d(pre) e a b (dc/cd) f

    2a:

    如果二进制只有一位,那就是带上这个二进制位加一(如果 \(n=1\) 那就答案是 \(3\)),不然的话你直接取 lowbit 就好了

    2b:

    如果有一个奇数,答案是偶数个数;如果全是偶数,那么保留二进制位最低的那个,先除到奇数,然后全加起来。

    2c:

    显然作为答案的字符出现了奇数次,其他的都是偶数次。因为这个东西没法儿 hack 提示作用还是很明显

    2d:

    分 n<=k 和 n>k 讨论,贡献还是很清楚明了的。n<=k 就是取一个长为 k 的区间再加 k(k-1)/2,否则就是所有的 a 的和再加上 n(2k-n-1)/2。

    2e:

    先搞出每个边的权值,然后从小到大加入当前的森林。记加之前森林的边权和为 v,加之后为 v',边权为 e,如果 v+e≠v' 那就说明 e 替换掉了一条边,进而说明 e 不能要。你想下 kruskal 在搞什么就清楚了

    2f:

    你考虑暴力,找到一个能改的区间 [l,r] 并且 \(\sum_{i=1}^{l-1} a_i-b_i = \sum_{i=1}^{r} a_i-b_i=0\),改之后枚举 l'∈[l,r] 和 r'∈[l,r] 继续递归改。这样复杂度爆炸了,直接并查集复杂度均摊就好了。

    至于为啥要是 0,因为你操作不是 0 的显然没用。

  • 相关阅读:
    plusOne
    lengthOfLastWord
    maxSubArray
    countAndSay
    学生会管理系统-后端个人总结
    基于图结构实现地铁乘坐线路查询
    地铁线路项目简要分析
    Spring Boot 路由
    Spring Boot 项目配置的使用方法
    IDEA搭建Spring Boot项目
  • 原文地址:https://www.cnblogs.com/amagaisite/p/16341119.html
Copyright © 2020-2023  润新知