UOJ#220. 【NOI2016】网格 Tarjan】的更多相关文章

下面直接给出结论,相关证明见官方题解. 1.若跳蚤数不超过1或仅有两只跳蚤且相邻,则答案为-1. 2.若跳蚤形成的连通块个数大于1,则答案为0. 3.若跳蚤之间建图存在割点,则答案为1. 4.否则为2. 这样就有70分了.但是图太大了,显然有很多没用的跳蚤被统计进答案. 考虑到造成不连通的情况一定在蛐蛐附近,于是将每个蛐蛐周围5*5的格子中的24个跳蚤全部取出,内圈8个称为一级空地,外圈称为二级空地.之考虑这些点即可,复杂度就只与蛐蛐个数相关了. 将所有被取出的跳蚤建图,求连通块个数和割点即可.…
[UOJ#220][BZOJ4651][Noi2016]网格 试题描述 跳蚤国王和蛐蛐国王在玩一个游戏. 他们在一个 n 行 m 列的网格上排兵布阵.其中的 c 个格子中 (0≤c≤nm),每个格子有一只蛐蛐,其余的格子中,每个格子有一只跳蚤. 我们称占据的格子有公共边的两只跳蚤是相邻的. 我们称两只跳蚤是连通的,当且仅当这两只跳蚤相邻,或存在另一只跳蚤与这两只跳蚤都连通. 现在,蛐蛐国王希望,将某些(0 个,1 个或多个)跳蚤替换成蛐蛐,使得在此之后存在至少两只跳蚤不连通. 例如:我们用图表示…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ220.html 前言 真是一道翔题. 草率题解 -1 的情况很好判,只有两种情况: n * m - c < 2 或者 n * m - c = 2 且两个格子相邻. 对于 x 坐标,我们大力将前两行.后两行.每一个点的上一行.所在行.下一行这些行离散化出来. 对于每一行,我们找出一些关键点,将一行分为若干段,将每一段看做一个点,上下左右相邻的段连边,跑Tarjan判割点. 怎么找关键点?对于每一个点,它左右距离2范围内,…
https://www.lydsy.com/JudgeOnline/problem.php?id=4651 https://www.luogu.org/problemnew/show/P1173#sub http://uoj.ac/problem/220 跳蚤国王和蛐蛐国王在玩一个游戏. 他们在一个 n 行 m 列的网格上排兵布阵.其中的 c 个格子中 (0≤c≤nm),每个格子有一只蛐蛐,其余的格子中,每个格子有一只跳蚤. 我们称占据的格子有公共边的两只跳蚤是相邻的. 我们称两只跳蚤是连通的,…
这个码量绝对是业界大毒瘤...... 300行,6.5k,烦的要死...... 题意:给你一个网格图,里面有0或1.你需要把一些0换成1使得存在某两个0不四联通.输出最小的换的数量.无解-1. n,m<=1e9,网格中1的数量<=1e5,多组数据. 首先我们发现,最多只要2就行了(围住一个角落),所以答案是[-1,2]中的整数. 然后考虑何时为-1:0的数目小于2或等于2且相连. 何时为0:图初始就不连通. 何时为1:图中存在割点. 除此之外就是2了. 然后发现图很大,c很小,考虑离散化. 然…
E. Tourists time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input output :standard output There are n cities in Cyberland, numbered from 1 to n, connected by m bidirectional roads. The j-th road connects city aj an…
来自FallDream的博客,未经允许,请勿转载,谢谢.   跳蚤国王和蛐蛐国王在玩一个游戏. 他们在一个 n 行 m 列的网格上排兵布阵.其中的 c 个格子中 (0≤c≤nm),每个格子有一只蛐蛐,其余的格子中,每个格子有一只跳蚤. 我们称占据的格子有公共边的两只跳蚤是相邻的. 我们称两只跳蚤是连通的,当且仅当这两只跳蚤相邻,或存在另一只跳蚤与这两只跳蚤都连通. 现在,蛐蛐国王希望,将某些(0 个,1 个或多个)跳蚤替换成蛐蛐,使得在此之后存在至少两只跳蚤不连通. 例如:我们用图表示一只跳蚤,…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 跳蚤国王和蛐蛐国王在玩一个游戏. 他们在一个 n 行 m 列的网格上排兵布阵.其中的 c 个格子中 (0≤c≤nm),每个格子有一只蛐蛐,其余的格子中,每个格子有一只跳蚤. 我们称占据的格子有公共边的两只跳蚤是相邻的. 我们称两只跳…
题目大意 有一个\(n*m\)(\(n,m\leq10^9\))的网格,每个格子是空地或障碍(\(障碍数\leq10^5\)) 定义两块空地连通,当且仅当它们是"相邻的两块空地"或"存在一块空地与这两块空地连通的两块空地"(也就是四连通) 求至少添加多少块障碍物,使存在两块空地不连通,或者输出-1表示无解 题解 当只有一块空地或只有两块相邻的空地时,无解 有解时,发现总能找到一个角落,使只用两个障碍物就能将这个角落和外界分开(如图) 也就是说,答案不超过2 当初始的…
首先显然可以通过孤立角落里的跳蚤使其不连通,所以只要有解答案就不会大于2.同样显然的一点是当且仅当跳蚤数量<=2且连通时无解.做法其实也很显然了:特判无解,若跳蚤不连通输出0,否则看图中是否无割点(即点双连通),若无答案为2,否则为1. 现在的问题是这个图实在是太大了.正常的离散化可能仍然需要留下c2个点.这个时候发现部分分很足于是我们就可以弃疗了. 比较直观的一点是附近没有蛐蛐的跳蚤不太可能被割开.显然只有周围八连通有蛐蛐的位置才可能成为割点.那么要判断其是否是割点还需要再取周围一圈.所以取出…
题目分析: 答案显然只有{-1,0,1,2}四种. 对于答案等于-1的情况,只有两种情况,一种是只剩一只跳蚤,另一种是只剩两只跳蚤且他们四连通,这个很好判. 对于答案等于0的情况,那说明联通块大于1,把图离散出来连边并查集判就可以了. 对于答案等于1的情况,我们要考虑唯一的联通块是否存在割顶,具体的,我们发现答案只可能是有蛐蛐的格子旁边的八个格子(n=1或m=1除外),那么把它们提取出来单独建点,而其它的离散,跑一边割顶就可以做了. 剩下的输出2. 代码: #include<bits/stdc+…
luoguP1712 [NOI2016]区间 这是一道送分题. 对于我这种每天抄题解不动脑子思维僵化得厉害的智障选手就是送命题. 一直在想端点排序各种Treap搞... 正解: 已知一些区间,如何判断是否满足条件?满足条件是有一个点被覆盖的次数大于m,那么用线段树可以解决这个问题.把区间按长度排序,从小往大考虑答案中选中最长区间的最大值.加入一个新的区间,线段树上区间加,当最大值仍大于m时,按加入时间删去最早的区间即可. //Achen #include<algorithm> #include…
Online Judge:#uoj 67 Label:Tarjan,割点,细节 题目描述 辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树.这个长着毒瘤的树可以用\(n\)个结点\(m\)条无向边的无向图表示.这个图中有一些结点被称作是毒瘤结点,即删掉这个结点和与之相邻的边之后,这个图会变为一棵树.树也即无简单环的无向连通图. 现在给你这个无向图,喜羊羊请你帮他求出所有毒瘤结点. 输入 第一行两个正整数\(n,m\),表示有\(n\)个点\(m\)条边.保证\(n≥2\).…
NOI2018前的每日记录 开头 今天是\(2018.7.2\),不知不觉已经这么久了.本来还是高一的小蒟蒻,过不了多久就要成为高二的老年选手了. 再过半个月我也要去\(NOI\)打酱油了.我这种D类蒟蒻当然是去打酱油的啊 发现我自己最近状态差的不行,索性开一个坑记录一下自己每天干了些啥,状态什么的怎么样吧. 和省选前一样吧,也就是流水账+做题的一些记录,顺带加上一点自己的感悟吧. 差不多就是这样了.但是现在已经是晚上了,今天我就不写今天发生的事情了. 听说明天要考试,所以我从明天开始记录,这样…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
2019-03-29 [NOI2016]网格 如果是矩形,要记得考虑n或m=1的情况,不要潜意识里就以为矩形就是接近正方形的那种理想矩形. 写bool型的函数,return 的语句要想清楚,不要放错位置. 2019-03-30 [NOI2013]矩阵游戏 写高精度如果重载了运算符,数组大小不能开的太大(不要超过1e4比较安全吧) 实在太大就不要用重载了. 矩阵乘法的矩阵要尽量优化,不要随便就写出一个3*3的矩阵,其实只要1*2就够了 O(27)与O(2)的常数差距啊.. 2019-03-31 […
这篇博客主要是用来记自己写代码的时候犯的各种小技巧和低级失误,好提醒自己,从而尽量缩短debug时间. 点分治 1.求每一个子树到重心的距离的函数接口应该是dfs2(v, eg, e[i].w)而不是dfs2(v, now, 0).一方面是子树的父亲是当前的重心,而不是进入这一层点分治的点:另一方面别忘了考虑这条边的贡献. 2-SAT 1.建图一定要考虑对称性,即"如果\(x\)成立,则\(y\)必须成立",那么我们还得考虑如果\(y\)不成立,则\(x\)也不能成立,比如[NOI20…
[BZOJ4651][NOI2016]网格(Tarjan,哈希) 题面 BZOJ 洛谷 题解 首先把题目稍微变得好说一些,给定一个网格,已经删去了若干个格子 问最少删去多少个格子使得图不连通. 这题的关键是要看出答案一定只有\(-1,0,1,2\) 证明一下一定存在答案不超过二. 在不是无解的情况下,四个角上的答案一定不会超过\(2\) 假设四个角被删去了,那么在边界上一定存在一个未被删去的格子, 一边抵着边界另外一边和一个被删去的格子相邻 (你可以认为这个角被删去了,然后这个角的限制就移动到了…
「NOI2016」网格 容易注意到,答案最多为2,也就是说答案为-\(1,0,1,2\)四种,考虑逐个判断. 无解的情况比较简单 如果\(nm\le c+1\),显然无解 如果\(nm=c+2\),判断2个跳蚤(如无说明,以下白点指跳蚤)是否四联通(如无说明,以下联通均指四联通),如果是,无解. 先不考虑复杂度 \(0\)的情况,就是白点有两个以上联通块,可以直接bfs判断 \(1\)的情况,就是白点存在割点,可以通过tarjan判断 \(2\)的情况,就是其他情况 这样的复杂度是\(O(Tnm…
#67. 新年的毒瘤 UOJ直接黏贴会炸...    还是戳这里吧: http://uoj.ac/problem/67#tab-statement Solution 看到这题的标签就进来看了一眼. 想了一个比较胡搞的方法,因为删除割点就会产生多个块,那么割点是不能被割的,所以只能割非割点. 删除非割点后是棵树,说明边数是N-2...然后求一下每个点的度... 只要不是割点,并且割掉这个点剩的边是N-2条,就输出..... 然后就A了...感觉还是很科学的. (这个Tarjan模板太好打了...顺…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ23.html 题目传送门 - UOJ#23 题意 给定一个有 n 个节点的仙人掌(可能有重边). 对于所有的 $L(1\leq L\leq n-1)$ ,求出有多少不同的从节点 1 出发的包含 L 条边的简单路径.简单路径是指不重复经过任意一点. $n\leq 10^5$ 题解 首先我们把走一条边看作多项式 $x^1$ ,那么一条长度为 L 的路径就是其路径上的多项式的乘积. 接下来称“环根”为距离节点…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ30.html 题目传送门 - UOJ#30 题意 uoj写的很简洁.清晰,这里就不抄一遍了. 题解 首先建出圆方树.接下来,我们称"圆点"为原来有的点,"方点"为新增的点. 然后先只考虑在线询问如何做. ——把方点的值设置成所有与他连边的圆点的权值的最小值,直接在圆方树上树链剖分再套个线段树支持一下区间询问即可. 然后会发现这样做支持不了修改操作. ——直接来个菊花图不断修…
[UOJ#67]新年的毒瘤(Tarjan) 题面 UOJ 题解 一棵\(n\)个节点的树显然有\(n-1\)条边,在本题中意味着删去一个点之后还剩下\(n-2\)条边.那么找到所有度数为\(m-(n-2)\)的点就好了.但是因为是一棵树,所以联通,所以割点不是答案. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 100100 inline int r…
http://uoj.ac/problem/146 题解:强连通分量 tarjan模板题.同时试了一下codeblock #include<bits/stdc++.h> using namespace std; ; vector<int> E[maxn]; int dfn[maxn],low[maxn],tot,n,ans=maxn,vis[maxn]; stack<int> S; void tarjan(int x){ low[x]=dfn[x]=++tot; S.p…
#67. 新年的毒瘤 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/67 Description 辞旧迎新之际,喜羊羊正在打理羊村的绿化带,然后他发现了一棵长着毒瘤的树. 这个长着毒瘤的树可以用 n 个结点 m 条无向边的无向图表示.这个图中有一些结点被称作是毒瘤结点,即删掉这个结点和与之相邻的边之后,这个图会变为一棵树.树也即无简单环的无向连通图. 现在给你这个无向图,喜羊羊请你帮他求出所有毒瘤结点. I…
$n,m \leq 1e9$,$n*m$的网格中有$c \leq 1e5$个是黑的,其他是白的.问:使至少两个白的不连通,最少需要再把几个白的涂黑. 可以发现答案是-1,0,1,2啦.-1要么没白的,要么一个白的,要么两个相邻白的.如果是两个不相邻白的答案就是0,这些可以特判掉. 其他的情况,可以建个图判连通.判割点.但网格太大了,可以发现连通的话只要关心所有黑点的周围八个白点之间的连通性即可,于是就记下这些点,离散化完分别按$x$和$y$排序来连边.但这样仍不能判割点,比如 0 0 0 0 0…
[UOJ#223][BZOJ4654][Noi2016]国王饮水记 试题描述 跳蚤国有 n 个城市,伟大的跳蚤国王居住在跳蚤国首都中,即 1 号城市中.跳蚤国最大的问题就是饮水问题,由于首都中居住的跳蚤实在太多,跳蚤国王又体恤地将分配给他的水也给跳蚤国居民饮用,这导致跳蚤国王也经常喝不上水.于是,跳蚤国在每个城市都修建了一个圆柱形水箱,这些水箱完全相同且足够高.一个雨天后,第 i 个城市收集到了高度为 hi 的水.由于地理和天气因素的影响,任何两个不同城市收集到的水高度互不相同.跳蚤国王也请来蚂…
[UOJ#221][BZOJ4652][Noi2016]循环之美 试题描述 牛牛是一个热爱算法设计的高中生.在他设计的算法中,常常会使用带小数的数进行计算.牛牛认为,如果在 k 进制下,一个数的小数部分是纯循环的,那么它就是美的.现在,牛牛想知道:对于已知的十进制数 n 和 m,在 k 进制下,有多少个数值上互不相等的纯循环小数,可以用分数 x/y 表示,其中 1≤x≤n,1≤y≤m,且 x,y是整数.一个数是纯循环的,当且仅当其可以写成以下形式:a.c1˙c2c3…cp-1cp˙其中,a 是一…
[UOJ#219][BZOJ4650][Noi2016]优秀的拆分 试题描述 如果一个字符串可以被拆分为 AABBAABB 的形式,其中 A 和 B 是任意非空字符串,则我们称该字符串的这种拆分是优秀的.例如,对于字符串 aabaabaa,如果令 A=aab,B=a,我们就找到了这个字符串拆分成 AABBAABB 的一种方式.一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令 A=a,B=baa,也可以用 AABBAABB 表示出上述字符串:但是,字符串 abaabaa 就没…
题目:http://uoj.ac/problem/67 题意:n个节点m条边的图,删除某个节点及他相连的所有边之后,剩下的图就成了一棵树.找出所有这样的节点. 思路:上次去清华面试的B题,当时就是在瞎写.太菜了. 其实就是两点,一是删除一个点是树,那么剩下来只有$n-2$条边.也就是说删掉的那个点的度是$m - (n - 2)$ 其次,删掉了这个点之后还需要保证图的连通性,也就是说割点一定不是. 所以就先用Tarjan求出所有割点,再找不是割点且度是$m - (n - 2)$的点. #inclu…