题目描述 给出一张 $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$ . 题解 乱搞+并查集 对于剩下的图…
小希的迷宫 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是双向连通的,就是说如果有一个通道连通了房间A和B,那么既可以通过它从房间A走到房间B,也可以通过它从房间B走到房间A,为了提高难度,小希希望任意两个房间有且仅有一条路径可以相通(除非走了回头路).小希现在把她的设计图给你,让你帮忙判断她的设计图是否符合她的设计思路.比如下面的例子,前两…
题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的前 $x_i$ 个位置中,恰好有 $y_i$ 个 $1$ : 序列的后 $y_i$ 个位置中,恰好有 $x_i$ 个 $1$ : 求有多少个序列满足所有限制条件.答案可能很大,只需要输出它对 $998244353$ 取模后的结果即可. 题解 组合数+乱搞 显然当 $x>y$ 时条件为前缀限制,$x<…
传送门 题意简述: 要求支持以下操作: 在a与b之间连一条长度为i的边(i是操作编号):删除当前图中边权最大的k条边:表示撤销第 i−1次操作,保证第1次,第i−1 次不是撤回操作. 要求在每次操作后输出当前图的最小生成树边权和. 思路:由于边权为当前操作编号因此相当于边是单调加入的,也就是说我们可以直接上kruskalkruskalkruskal的合并方法. 关键在于怎么维护这几个操作. 加边操作:加入一条边. 删除操作:删掉最近加入的kkk条边. 撤回加边操作:删掉最近加入的一条边 撤回删除…
#131. [NOI2015]品酒大会 统计 描述 提交 自定义测试 一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 nn 杯鸡尾酒.这 nn 杯鸡尾酒排成一行,其中第 ii 杯酒 (1≤i≤n1in) 被贴上了一个标签 sisi,每个标签都是 2626 个小写英文字母之一.设 Str(l,r)Strlr 表示第 ll 杯酒到第 rr 杯酒的 …
显然可以用可持久化并查集实现.考虑更简单的做法.如果没有撤销操作,用带撤销并查集暴力模拟即可,复杂度显然可以均摊.加上撤销操作,删除操作的复杂度不再能均摊,但注意到我们在删除时就可以知道他会不会被撤销,所以遇到一个要被撤销的删除操作时,直接求出去掉k条边后的MST即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #…
#142. [UER #5]万圣节的南瓜灯 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/142 Description 红包是一个心灵手巧的男孩子.今天是万圣节,红包正在家里制作南瓜灯. 这时候一群熊孩子们敲开了红包家的门,他们高呼着“不用给糖,只要捣蛋”的口号把红包的南瓜灯弄坏了.这让红包很难过,于是他打算把这些被弄坏的南瓜灯做成其他的工艺品. 红包把它的南瓜灯划分成了 n×m 的网格,并用 (x,y)…
题面 传送门 题解 为什么大佬们全都是乱搞的--莫非这就是传说中的暴力能进队,乱搞能AC-- 似乎有位大佬能有纯暴力+玄学优化\(AC\)(不算上\(uoj\)的\(Hack\)数据的话--这要是放到考场上就是切题的啊--) 整体思路呢,就是我们开一个线段树,线段树上的每一个区间维护"以这个区间右端点为结尾有可能成为后缀最小值的位置" 怎么合并呢 首先右儿子的所有节点都是可以加入的,因为它们后面也没有加上什么东西 然后对于左儿子来说它们相当于后面被整体怼了一个串,我们就要考虑它们是不是…
UOJ_14_[UER #1]DZY Loves Graph_并查集 题面:http://uoj.ac/problem/14 考虑只有前两个操作怎么做. 每次删除一定是从后往前删,并且被删的边如果不是树边则没有影响,如果是树边也不存在边能替代. 直接删除这条边就可以. 于是用一个栈来保存现场,然后按秩合并的并查集维护就OK了. 现在有撤回操作,但根据上面对删边分析出的性质. 可以这样: 如果是插入一条边,然后撤回,相当于删边. 如果删边然后撤回,相当于什么也不做. 代码还是很好理解的. 代码:…
题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没打题了 算法:排序,乱搞.主要是要考虑到排序的时候,len大的放前边,这样可以break省掉不少时间.最后注意题目要求的输出顺序,是类似于输入顺序的理解. #include <cstdio> #include <cstring> #include <iostream> #i…