zoukankan      html  css  js  c++  java
  • CF1373G

    考虑中间格子不能有相同的点,其实是没用的。
    其唯一用处是用来规定最后的是无法重叠的。
    我们可以证明最后位置的无重叠和中间不重叠是充要的。
    那显然可以我们对每个点往后连边:
    形式的话的说:
    ((x,y))([a_i = (x + |k - y|),s]) 连边。
    那么所有点都有位置当且仅当有二分图完美匹配。

    那么依据 (Hall) 定理:
    二分图有最优匹配的条件:
    (forall V in S,|V| < |N(V)|,N(V) = igcup_{x in V,(x,y) in E(x)}y)

    那么套用到这题。

    每次我们加入一个点则在 (a_i) 处加一。
    那么则有每个位置后缀和 (p(i) leq s - j + 1)
    那么变项一下 (p(i) + j - 1 leq s)
    那么单点求后缀转成区间,那么就是区间加,全局(max)
    吉老师线段树即可。

  • 相关阅读:
    信息安全算法
    另类装载问题
    分治法快速排序
    动态规划最长公共子序列
    java网络编程1
    Jndi和会话bean
    EJB初探
    JSF初探
    简单计算器
    关于坐火车
  • 原文地址:https://www.cnblogs.com/dixiao/p/15425629.html
Copyright © 2011-2022 走看看