• Codeforces Round #757 (Div. 2)


    solved: 4/5

    A:

      贪心, 从小到大拿, 在范围内就拿, 直到拿不了位置

      这个n就100是不是想吓唬我

    B:

      贪心, 把次数拉出来, 优先分配1的给他, 可以注意到1可以分配两次, 2可以分配两次……

      然后把x0放在1..n+1的中心就可以了

    C:

      拆位考虑, 对于第k位(从低到高), 假设上面有cnt个1, 那肯定有n-cnt个0

      要使子序列的异或值为1, 那么肯定是由奇数个1和若干个0组成

      那么也就是从挑奇数个1搭配若干个0, 答案是$2^{cnt-1}2^{n-cnt}=2^{n-1}$

      这一位为1, 实际上是$2^k$

      然后考虑一下, 构造原序列

      她说l..r的or值为x, 那么假设x的第k位为1, 则第k位上至少有一个1, 1的数目我们是不关心的, 只要关心有没有就够了

    D:

      观察那个式子, 定义$a[i]=gcd(a_1,a_2..a_i)$

      可以发现$a[i+1]|a[i]$

      那么就好办了, 定义f[i]为以i为gcd结尾的最大长度, g[i]表示以i结尾的最大和

      那么从i|j处转移, j是i的倍数, g[j]+1..g[i]上都放i, 贡献是i*(g[i]-g[j])

      可以发现f[i]就是i的倍数的数目,

      ai 2e7, 但是n只有1e5, 所以与其用调和级数, 不如直接根号分解

      注意存一下因子, 可能他没有在序列中出现过, 但是转移要用

      比如6 8的因子是2

      绝杀D2的时候太紧张把D2交到D1上亏了300多分捏QAQ, 还好D2最后得了300多分补回来了, 但是跟我没写D2有什么区别呢QAQ


    补题: 1/1

    E:

      动态开点线段树板子题

      一开始的序列是$a[i]=i \ 0\leq i\leq 10^9$

      用线段树来维护这个序列

      可以发现每多一天,当天温度为T, 就是对所有值为$[1,T-1]$的数都+1, 对值为$[T+1,10^9]$的数都-1

      可以发现, 如果如果一开始温度x<y, 那么经过多天的变换后肯定有$Tx\leq Ty$

      那么线段树动态开点维护每个点的值就可以了, 维护区间最小最大值, 然后二分找到最右的一个<Ti的点L, 最左的一个>T的点R

      如果找不到, 就不修改, 找得到就修改$[0,L]$ $[R,10^9]$

  • 相关阅读:
    layer 刷新某个页面
    C# Server.MapPath的使用方法
    .net mvc + layui做图片上传(二)—— 使用流上传和下载图片
    ASP.NET MVC4.0 后台获取不大前台传来的file
    安卓手机修改host
    mvc 页面 去掉转义字符
    educoder数据库实训课程-shell语句总结
    python selenium实现自动操作chrome的某网站数据清洗【此篇为jupyter notebook直接导出.md】
    LeetCode_27移除元素【数组】
    LeetCode_26 删除排序数组中的重复项【数组】
  • 原文地址:https://www.cnblogs.com/gllonkxc/p/15610159.html
Copyright © 2020-2023  润新知