zoukankan      html  css  js  c++  java
  • 6458. 【GDOI2020模拟02.03】城市破坏

    题目

    给你个无向图,然后有若干个独立的询问。
    每次都是问删去一些边后图是否连通(不超过(4)条边)


    思考历程

    一开始一直在想Tarjan,还想着能不能层层缩点……
    后来突然发现,这直接上动态维护图的连通性问题板子就好了!
    然后不到(30min)直接碾了过去。


    正解

    正解怎么会是这么模板的东西呢??!
    正解是非常优秀的随机化算法。
    我们对每条边构造一个权值,使得对于所有的连通块,连出去的所有边的权值异或和恰好为(0)
    反过来,我们(假装)认为如果一些边异或起来是(0),那么删去这些边之后,某个连通块跟其它地方隔绝了。
    很显然,这样子认为的正确性是有问题的。但实际上,只要你将边权的取值范围都开得特别大,那么出错的概率非常小。
    接下来考虑怎么构造。
    一个点是最小的连通块,我们先要保证一个点的出边的异或和为(0)
    然后就可以发现一条性质:如果我们保证每个点的出边的异或和为(0),那么就可以保证每个连通块的出边的异或和为(0)
    因为如果将连通块内的点的所有出边都异或起来,和为(0);并且连通块内的边各出现两次,被抵消;所以最后只剩下连通块的出边。
    那么我们只需要让每个点都满足条件就好了。
    接下来直接构造就完事啦,至于怎么造就不说了吧……


    总结

    没有打正解,所以代码懒得发。比赛时的做法太板,发出来没有意义。
    随机化算法的重要思想:如果有些命题成立,而逆命题不一定成立,但是不成立的概率很小,那这时候就可以考虑一下随机化了。

  • 相关阅读:
    [转]群控电梯调度算法
    [转] 电梯调度算法总结
    [转]grub2.0和之前版本修复解决方案
    [转]Ubuntu 10.04 编译安装最新版本Linux2.6.34内核
    [转]PS2 键盘工作方式
    [转]个人管理 - 目标管理之前,你会时间管理吗
    [转]ubuntu 下编译内核简单步骤
    [转]关闭Google安全搜索,实现无限制搜索
    [转]Vim 复制粘贴探秘
    [转]Linux文件搜索
  • 原文地址:https://www.cnblogs.com/jz-597/p/12269170.html
Copyright © 2011-2022 走看看