zoukankan      html  css  js  c++  java
  • Codeforces Round #620 (Div. 2) 题解

    A

    判断((a+b)|(y-x))即可。

    code

    B

    贪心的枚举互相匹配的前后缀,再寻找剩下的串中是否有合法的可作为中间位置的串即可。

    code

    C

    维护一下当前能到达的温度的最大值和最小值,再和每个人的需求比一下即可。

    code

    D

    发现一串连续的(<)已经构成了LIS,那么最长LIS则要求所有的(<)能连在一起,最短LIS则要求每段LIS互相独立无法拼接。

    可以维护一头一尾两个指针表示值域,(<)的使用尾指针,(>)的使用头指针,通过控制(>)前的元素段与段之间的递增/递减来实现最长LIS/最短LIS间的切换。

    code

    E

    做过CSP-J2019的T4的都应该知道:我们需要求出奇偶性不同的两条最短路长。由于重复经过一条路径只会给最短路带来偶数次影响,所以只能通过走环来强制改变路径的奇偶性。

    不强制走环的最短路一定是原树上的最短路,强制走环的话可以考虑强制走加的边((u,v))这样虽然有两种情况但是奇偶性是一致的(画个图证一下就好了)。

    code

    F1&F2

    (f_{i,j})为第(i)天,上一天在位置(j)架起了照相机的最大值,则有。

    [f_{i,j}=max(f_{i-1,p}+w(i,p)-mathrm{intersect}(i,j,p)) ]

    其中(w(i,j)=sum_{p=j}^{j+k-1}a_{i,p}), (mathrm{intersect}(i,j,p))表示(w(i,j))(w(i,p))的相交部分。

    F1的话发现(mathrm{intersect}(i,j,p)=0)的部分可以通过预处理前缀/后缀的最大值就可以(O(1))转移,不为(0)的部分可以暴力(O(k))转移。

    F2的话考虑(a_{i,j})会与(f_{i-1,j-k+1},f_{i-1,j-k+2},cdots,f_{i-1,j})交叉,是一段区间。于是每一次可以用线段树维护(f_{i-1,p}-mathrm{intersect}(i,j,p)).当枚举的(j o j+1)时,至多只会有两个(a)的值的贡献被加上/删去,线段树上直接区间修改即可。

    code(F2)

  • 相关阅读:
    CF117C Cycle (竞赛图找环)
    P1144 最短路计数 (bfs/SPFA)
    RabbitMQ.Client API (.NET)中文文档
    四元组
    .Net Standard Http请求实例
    .Net Standard简介
    Lambda表达式(lambda expression)⭐⭐⭐⭐⭐
    CSS
    工具类css框架
    Sass
  • 原文地址:https://www.cnblogs.com/encodetalker/p/12446657.html
Copyright © 2011-2022 走看看