首页 > TAG信息列表 > 连边
虚树
一种大树变小树的方法。大概就是只保留题目要求的关键点和其他一些统计答案必须的点,把剩余的所有点从树上砍掉。原理是维护一条最右链(就是我们扫到的最右边的一条链,它左边的虚树已经建好)。 具体的操作: 首先把所有的关键点按照dfs序排序。然后开始分讨: 如果栈空则节点入栈。 找到luoguP4407 [JSOI2009] 电子字典 解题报告
传送门 题意 对于多个字符串,查询其在字典树上的存在性或删除/插入/替换一个字符后存在的个数。 思路 存在性好说,直接在 Trie 树上做一遍查找即可。那剩下的三个操作怎么办呢?分类讨论吧。 删除 该操作等同于在匹配时越过 \(S_i\) ,剩余的字符与当前匹配节点和连边继续匹配。 插入 该1002 [NOIP2013]车站分级 拓扑排序 超级站点 给不好直接连边的点连边 给有层级关系但是没法直接标明的序列划分等级
链接:https://ac.nowcoder.com/acm/contest/26077/1002来源:牛客网 题目描述 一条单向的铁路线上,依次有编号为1, 2, …, n 的n 个火车站。每个火车站都有一个级别,最低为1 级。现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火P2403 [SDOI2010]所驼门王的宝藏 题解(Tarjan+SPFA)
事实证明,卡常是可以过的。 这题无需排序,无需用哈希代替 map,只要卡常到位就能过。 首先暴力建图是不可取的,很容易卡。所以我们要考虑优化。 第三种门显然只能暴力建边,至于前两种的话,由于那些同类型且在同行(如果是第二种门的话就是同列)的门互相可以到达,考虑把他们建成一个环,再让其中差分约束系统和同余最短路(待更)
神仙思路,如果你想到那你就做出来了,想不到就完全做不动。 1. 差分约束系统 这个东西应该是耳熟能详的了。 我们知道最短路里有这个不等式:\(d_y\leqslant d_x+w_{x,y}\) 那么有 \(d_y-d_x\leqslant w_{x,y}\)。然后就能用来做题了。 一般有下面几种变形: \(x_i-x_j\leqslant c_k\):2022.7.22 做题记录
为啥昨天没发做题记录呢 因为昨天颓了一天就写了一个题,就酱 CF246E Blood Cousins Return Present 6 给定 \(n\) 个节点的一片森林,每个节点上有一个字符串。 有 \(m\) 次询问,每次给出 \(v,k\),你需要输出 \(v\) 子树内深度为 \(d_v+k\) 的节点上有多少个不同的字符串。 其中 \(d_uCF 793 D (树的特性+圆上连边不相交)
Problem - D - Codeforces 题目大意: 由题意看能不能,根据点的奇偶度来在圆形上建树,让这些边没有相交.(端点可以无所谓) 思路: 首先判断是否成立,这里利用树的特性, 奇数点的个数要大于等于2,并且奇数点的个数一定是偶数 这样才可以构成一个树 那么如何在圆上构造而不会相交呢?Sol.CF1696D
赛时寄了,然后本人很气愤,于是写下此篇题解。 (没关系,这可是 \({\color{black}j}{\color{red}{iangly}}\) 江老板都没有做出来的绝世大好题啊!!!) 然而看过题解之后 \(O(n)\) 算法还是一概不会,于是只能思维不够 DS 来凑,然而 D 题撑死也不会有什么奇葩东西,所以就选择了线段树板子来做区间20220617练习
1.P1197星球大战 主要思路为难以从正向维护删边的连通块,就从逆向维护加边的连通块。 2.P5022旅行 首先从“任意选定一个城市作为起点,然后从起点开始,每次可 以选择一条与当前城市相连的道路,走向一个没有去过的城市,或者沿着第一次访问该 城市时经过的道路后退到上一个城市。当小 YP6517
网络流,但是大模拟。 P6517 [CEOI2010 day1] alliances 题面有点长,不放了。 首先,题目给出的是一个方格图,而且连边是在相邻四个方向(上下左右)之间。 所以可以对方格图进行黑白染色,这样相同颜色的点之间就不会连边。 先考虑没有人类连边的限制,则直接跑二分图多重匹配即可。 建图方【线段树优化建图】【P5029 T'ill It's Over】
【线段树优化建图】【P5029 T'ill It's Over】 P5029 T'ill It's Over Analysis 每次将一个区间一块进行连边,可以用线段树优化,减少连边数。 具体在线段树每个节点维护一个编号,这个编号用一个tot来分配,在build时,每新建一个节点,tot++。将每个节点与它的左右儿子连边。 需要注意的是,AtCoder Regular Contest 069 F-Flags
Flags 题意:N 个 flag,第 \(i\) 个在 \(x_i\) 或 \(y_i\) 坐标上,求一种方案,使得每个 flag 之间的最小距离最大。 \(2\le N \le 10^4, 1\le x_i, y_i \le 10^9\) 不妨设 \(a[i] = x_i, a[i+n] = y_i\) ,这样可以方便的取出同组元素。 排序后,为了定位到原位置,需要使用 pair 去存放每个[做题笔记] 2-sat 问题的进阶应用
对称性 考虑 \(\tt 2sat\) 边的意义是:如果选取了 \(i\) 则必须选取 \(j\),那么如果我们连边 \((i,j)\),我们都是也需要连边 \((inv(y),inv(x))\)(\(inv(x)\) 即表示变量 \(x\) 的逆),因为原命题和其逆否命题真假相同。 那么发现这样建出来的图具有某种对称性,此性质是 \(\tt 2sat\) 算法省选模拟 13
一般图带权多重匹配 考虑如果都是偶数的点,那么我们可以将每一点的连边划分为入边和出边,这样构成很多个欧拉回路。 对于每个点入度和出度相等,特别的,自环也可以计算在内。 这样就可以net-flow,跑一个最小费用最大流。 考虑加入某些奇点,这样形成的是欧拉路,无非就是枚举这个点增加的是P8108 [Cnoi2021]绀珠传说 解题报告
P8108 [Cnoi2021]绀珠传说 解题报告: 更好的阅读体验 题意 给定一个 \(n\times n\) 的网格,用 \(n\) 种颜色染色,每种颜色恰好染 \(n\) 次,保证染色均匀随机。 你每次可以选择底端某一行连续的一个同色段,并将其消除,其上面的颜色都会因为重力掉下去。(感性理解一下) 最小化操作次数。 \(1BZOJ 3714 Kuglarz
BZOJ 3714 Kuglarz 非常玄学的一道题....到现在还没理解为什么是最小生成树的题... 这里就从另一个角度解析题目,首先题目中每个杯子中是否藏有球可以视为0/1,而我们询问的一个区间的奇偶可以看做是若干个变量相异或的和,而每个变量的意义就是该杯子下是否藏有求0/1.那么我们的目的是小M的作物
luoguP1361 小M的作物 题目描述 小 M 在 MC 里开辟了两块巨大的耕地 \(A\) 和 \(B\)(你可以认为容量是无穷),现在,小 P 有 \(n\) 种作物的种子,每种作物的种子有 \(1\) 个(就是可以种一棵作物),编号为 \(1\) 到 \(n\)。 现在,第 \(i\) 种作物种植在 \(A\) 中种植可以获得 \(a_i\) 的收益,在题解 P5787 二分图 /【模板】线段树分治
分析 线段树分治呢,处理的就是这些基于时间上的物品加入删除问题,我们将所有事件离线处理,每一个询问代表一个时刻,对于每一个物品,处理它所存在的时段,概括一下就是用线段树来处理每一个物品能对哪些询问起作用。 所以线段树每一个节点就代表了一个时段,而在询问中我们通常是找某一个时51nod 补题
11.27 孢子传播 暴力连边是 \(O(n^{2})\),发现 \(k\) 很小,考虑把每个种类的孢子移动表现出来 建 \(nk\) 个新点,\(id[i,j]\) 表示一个从类型 \(j\) 土壤出发的孢子走到 \(i\) 的最小距离,连边: 原点散发孢子:\((i,id[i,q[i]],0)\) 孢子移动 \((id[i-1,j],id[i,j],1),(id[i,j],id[i+1,j线段树优化建图
在一类问题中,我们会使用时间复杂度和边数有关的算法,如【HNOI2019】校园旅行中的暴力算法,\(O(n+m)\) 的 Dijkstra,\(O(n+m)\) 的 tarjan 等,此时可能会由于边数太大而导致算法复杂度过大,此时的一个优化方向就是减少边数的规模,比如[【HNOI2019】校园旅行]中,我们充分利用题目条件的性质【题解】(模拟赛)游戏
https://fzoi.top/contest/97/problem/5088 题意 现在有\(2n\)个人围成一圈,第\(i\)个人与第\(i-1\)和\(i+1\)的人相邻,\(1\)与\(2n\)也相邻。这些人来自\(n\)个不同的学校,每个学校都派了两个人来参加。 对于同一个学校的两个人,他们不希望在游戏中属于同一个阵营。同时,也不能存在连2021.11做题记录
计划主要以小视野和CF2500~2600为主 小视野上的题直接瞎起名字了 東京 Tokyo とうきょう 可以考虑 dp,按照最短路长度把点分层,发现要么这一层到下一层连边,要么是层之间连边 因为 2 可以随便取,所以实际上是求一个图的每个点的最短路长度之和 用 \(f[i][j]\) 表示 \(i\) 个点最后一层【IOI2014】Friend 题解
Statement 【IOI2014】Friend - Problem - Universal Online Judge (uoj.ac) Solution 先观察题目性质 然鹅并没有发现什么性质 题目显然是在问最大权独立集,一个 NP 完全 发现如果没有第三种操作,最后会是一个二分图 我们知道 最大点权独立集=总权值-最小点权覆盖集=总权值-最小割网络流题目选解
这里有板子 最大流 view code namespace Flow { int tot=1,fi[N],ne[M],to[M],w[M],S,T,d[N],nn; inline void add(int x,int y,int c) { ne[++tot]=fi[x],fi[x]=tot,to[tot]=y,w[tot]=c; ne[++tot]=fi[y],fi[y]=tot,to[tot]=x,w[tot]=0; } inline bool bfs() { fill【树形DP】CF1016F Road Projects
传送门 题解 一开始想的是先求出 \(1,n\) 的单源最短路,之后枚举中转点把两段拼起来,几乎写完了之后才发现我这个想法根本就不对。(因为没办法简单地把两段路径拼在一起)重构了,用时巨长。 其实,按照上面的思路继续,应该也不难想出正解。 变换一下视角,把 \(1 - n\) 的路径单独提出来,以后