zoukankan      html  css  js  c++  java
  • GYM102759E Chemistry

    说在前面的话

    这道题目有点意思的,很具有启发性。

    题解

    我们考虑如何将链的条件转化为充要条件,发现链等价于所有点的度数小于等于 (2)(V-E=1)

    考虑怎么处理这两个问题。

    对于第一个条件,可以轻易的发现是满足单调性的,所以我们可以直接双指针维护,这里有一些操作细节,就是要搞两个线段树以保证复杂度正确。

    对于第二个条件,我们可以设 (f_{l,r}=V_{l,r}-E_{l,r}) ,即 (f_{l,r}=r-l+1-E_{l,r}) ,我们需要求的就是 (f_{l,r}=1) 的区间。

    考虑对于一条边 (e_{u,v}(u<v)) ,他对于 (f_{l,r}) 的贡献是

    [f_{[1,u],[v,n]}=f_{[1,u],[v,n]}-1\ f_{(u,v),(u,v)}=f_{(u,v),(u,v)} ]

    但是如何数出 (1) 的个数呢?

    我们结合第一个条件,最后答案肯定是要在双指针移动过程中求的。你考虑左指针的转移,对于函数 (f_{l,r}) 的影响是一个区间加减,不可能可以直接暴力求取。我们考虑维护出区间的最小值,同时输出最小值的个数来做。

    但是你发现如果导出子图中存在环的话,就可能不满足最小值是 (1) 了,这个时候你可以再次利用双指针,找出每一个左指针对应的最右边的不存在环的位置,这个可以( ext{LCT}) 实现

    好像非常 ( ext{shit}) ,我不想写了。

    挖个坑吧,想写了就补上。

  • 相关阅读:
    hdu 5253 最小生成树
    hdu5248 序列变换
    bjfu1299 stl使用
    bjfu1277 简单递归
    bjfu1262 优先队列
    bjfu1287字符串输出的大水题
    bjfu1281
    bjfu1253 最大上升子序列和
    [转][Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
    Unity3d 中 将远程 MySQL 数据库转换为本地 Sqlite
  • 原文地址:https://www.cnblogs.com/Point-King/p/14442906.html
Copyright © 2011-2022 走看看