题目描述

给出一张 $n\times m$ 的网格图,两个格子之间有一条双向边,当且仅当它们相邻,即在网格图中有一条公共边。

特殊地,对于 $1\le x\le n​$ ,$(x,1)​$ 和 $(x,m)​$ 也视为相邻。但对于 $1\le y\le m​$ ,$(1,y)​$ 和 $(n,y)​$ 不视为相邻。

现在这张网格图有 $k​$ 个格子坏掉了,你需要判断剩下的部分是否形成一张无向无环连通图。

$n,m\le 10^9$ ,$k\le 10^5$ 。


题解

乱搞+并查集

对于剩下的图:点数为 $nm-k$ ,边数大于等于 $2nm-m-4k$ 。

由于剩下的部分是一棵树,因此有点数大于边数,即 $nm-k>2nm-m-4k$ 。

整理得 $(n-1)·m<3k$ 。

由于 $k$ 只有 $10^5$ ,因此 $(n-1)·m$ 只有 $3\times 10^5$ 。又因为 $n\le 3$ ,因此 $nm$ 也只有 $4.5\times 10^5$ 。

经过构造后得出最大的 $nm$ 在 $n=4,m=99999$ 时取到,为 $399996$ 。

因此当满足 $(n-1)·m<3k$ 时暴力(数组要开到 $449997$ 以上),否则输出No即可。时间复杂度 $O(449997T)$ 。

或当满足 $nm\le 400000$ 时暴力(数组要开到 $400000$ 以上),否则输出No即可。时间复杂度 $O(400000T)$ 。

#include <cstdio>
#include <cstring>
#define pos(i , j) ((i - 1) * m + j)
int v[450010] , f[450010];
int find(int x)
{return x == f[x] ? x : f[x] = find(f[x]);
}
int main()
{int T;scanf("%d" , &T);while(T -- ){memset(v , 0 , sizeof(v));int n , m , k , i , j , x , y , c = 0;scanf("%d%d%d" , &n , &m , &k);if(1ll * n * m >= m + 3 * k){while(k -- ) scanf("%*d%*d");printf("No");if(T) puts("");continue;}for(i = 1 ; i <= k ; i ++ ) scanf("%d%d" , &x , &y) , v[pos(x , y)] = 1;for(i = 1 ; i <= n * m ; i ++ ) f[i] = i;for(i = 1 ; i <= n ; i ++ ){for(j = 1 ; j <= m ; j ++ ){if(!v[pos(i , j)]){if(i < n && !v[pos(i + 1 , j)]) f[find(pos(i , j))] = find(pos(i + 1 , j)) , c ++ ;if(!v[pos(i , j % m + 1)]) f[find(pos(i , j))] = find(pos(i , j % m + 1)) , c ++ ;}}}if(c != n * m - k - 1) printf("No");else{for(i = 1 ; i <= n * m ; i ++ )if(!v[i])x = find(i);for(i = 1 ; i <= n * m ; i ++ )if(!v[i] && find(i) != x)break;if(i <= n * m) printf("No");else printf("Yes");}if(T) puts("");}return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/8681403.html

【uoj#142】【UER #5】万圣节的南瓜灯 乱搞+并查集相关推荐

  1. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

  2. UOJ14 UER #1 DZY Loves Graph(最小生成树+并查集)

    显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销 ...

  3. UOJ #142. 【UER #5】万圣节的南瓜灯 并查集

    #142. [UER #5]万圣节的南瓜灯 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/142 Descrip ...

  4. [UOJ#245][UER#7B]天路

    Description 给出n个数,对于每个k(2<=k<=n),求出最大的一个ans,使得存在一个连续的长度为k的区间中最大值和最小值的差为ans. 答案与标准答案的误差不超过5%即为正 ...

  5. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】

    题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...

  6. AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)

    整理的算法模板合集: ACM模板 我们知道在同一个边双连通分量中的点没有必经边(因为至少有两条分离的路径). 所以我们直接tarjan求出桥后缩点,然后求一下树上两点间的距离即可. 那么如何求树上两点 ...

  7. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  8. BZOJ-1800 飞行棋 数学+乱搞

    这道题感觉就是乱搞,O(n^4)都毫无问题 1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1172 So ...

  9. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

    3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 367  Solved: 159 [Submit][Status ...

最新文章

  1. 生物识别包含人脸识别门禁之外还包含哪种识别种类
  2. [Web 前端] inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移
  3. 在国企当程序员是什么体验?
  4. 类库探源——System.ValueType
  5. 需要额外端口信息_NR逻辑天线端口介绍
  6. servlet容器_SpringBoot是否内置了Servlet容器?
  7. sigslot库源码分析
  8. 智慧城市产业图谱研究报告(2020年)
  9. 《我们不一样团队》项目需求分析改进
  10. 全球及中国出版行业发展动态与运营盈利前景分析报告2022版
  11. h5分享到新浪微博 php,h5分享图文链接到微博如何实现
  12. 怎么看神经网络过早收敛_深度学习训练网络中,test loss比training loss早很多收敛,迭代次数要怎么取?...
  13. 细说php作者高洛峰免费收徒
  14. Session.AUTO_ACKNOWLEDGE
  15. K8S部署方式选择——没有最好的,只有最合适的
  16. 列表解析python_python列表解析式
  17. The Unarchiver-解决Mac解压后文件名乱码问题
  18. manjaro基础配置换源常用软件
  19. 前端基础学习——Vue框架-AJAX的使用
  20. Java Web前端到后台常用框架介绍

热门文章

  1. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较
  2. 祝贺!港中文助理教授周博磊宣布加入UCLA
  3. CVPR2021 | 北航商汤耶鲁口头报告
  4. 重磅 | 《机器学习综述》算法分类及特征工程手推笔记!
  5. Nature官方劝退读博:全球七成博士对前途迷茫
  6. Matlab线性/非线性规划优化算法(5)
  7. python实现决策树归纳_决策树【python实现】
  8. python自动发送邮件_Python自动发送邮件
  9. python把模块装到文件夹中_把模块有关联的放在一个文件夹中 在python2中调用文件夹名会直接失败 在python3中调用会成功,但是调用不能成功的解决方案...
  10. linux mint 自动更新设置,如何升级到Linux Mint 19.1