![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 64
Defener
这个作者很懒,什么都没留下…
展开
-
NOI2016 网格
题面 答案显然在−1,0,1,2-1,0,1,2−1,0,1,2之中,因为如果不是−1,0,1-1,0,1−1,0,1的话一定可以在一个角落的位置放两个蛐蛐达成目的。 若答案为−1-1−1,则跳蚤数量小于222或者两个跳蚤不相邻。 若答案不为−1-1−1,则将相邻的跳蚤连边,若图不连通则答案为000,若图连通且存在割点则答案为111,否则答案为222。 实际上跳蚤数量很多,直接连边不现实。将所有蛐蛐周围的八个跳蚤取出,并取出其所在行、所在列最靠边的四个跳蚤,再在整个矩形的四个角每个角取出四个跳蚤。把取出的跳原创 2021-09-24 23:02:20 · 127 阅读 · 0 评论 -
最大流最小割费用流线性规划模拟费用流保序回归
题面 对每个塔,将它攻击的范围用有向边串起来,割掉一条边表示选择对应的点。将流量赋为最大可能值减去该位置的值即可。对于炮弹轨迹不能相交的限制,在一条链上对应位置连一条有向边流量为正无穷到另一条链上对应的点即可,并将另一条链翻转。 时间复杂度 O(n3m3)O(n^3m^3)O(n3m3),空间复杂度 O(n2m2)O(n^2m^2)O(n2m2) #include<stdio.h> #include<queue> using namespace std; #define R regi原创 2021-06-16 23:08:16 · 319 阅读 · 1 评论 -
牛客挑战赛49 G Ok起飞
由于原图是仙人掌,可以将一个简单环中流量最小的边删掉,并让该环中剩下的边加上该边的流量,最终形成一棵树。类似于瓶颈树,将边按流量排序,按流量从大到小的顺序加入。将异或的贡献拆位,维护每个连通块每个二进制位为000和111的点个数即可计算答案。 #include<stdio.h> #include<vector> #include<set> #include<map> #include<algorithm> using namespace std;原创 2021-06-06 21:03:08 · 256 阅读 · 2 评论 -
拟阵深造 遗忘的记忆
拟阵 一个集合 PPP 是拟阵的充要条件为: ϕ∈P\phi \in Pϕ∈P。 对于任意的集合 A,BA,BA,B 满足 A∈P,B⊂AA \in P,B \subset AA∈P,B⊂A,一定有 B∈PB \in PB∈P。 对于任意的集合 A,BA,BA,B 满足 ∣A∣>∣B∣|A|>|B|∣A∣>∣B∣,则一定存在元素 x∈∁ABx \in \complement_A^Bx∈∁AB 满足 B⋂{x}∈PB \bigcap \{x \} \in PB⋂{x}∈P。 拟阵交 现原创 2021-05-26 19:49:07 · 139 阅读 · 0 评论 -
Codeforces 1299 D 环游世界
题面 对于图上路径异或问题,先抓一棵生成树,对于每条非树边算出接在树上形成的环异或值,将这些值加入线性基中求解。 这里同样的做法,在选生成树时优先选与111号点相连的边。对于非树边分情况讨论: 存在点 x,yx,yx,y,x,y,1x,y,1x,y,1 中两两有连边。先将 x,yx,yx,y 子树内的非树边加入线性基,若保留 1,x1,x1,x 之间的边或 1,y1,y1,y 之间的边,则该线性基最终会保留下来。若保留这两条边,则 x,yx,yx,y 之间的边也会保留下来。 直接将非树边加入线性基即可。原创 2021-05-10 12:11:27 · 166 阅读 · 0 评论 -
模拟赛 信号的覆盖
题面描述 已知整数 nnn。fi=∑j=1ndis(i,j)f_i=\sum_{j=1}^n dis(i,j)fi=∑j=1ndis(i,j),已知 f1,f2,⋯fnf_1,f_2, \cdots f_nf1,f2,⋯fn,且对于任意的 1⩽i<j⩽n1 \leqslant i < j \leqslant n1⩽i<j⩽n 满足 fi≠fjf_i ≠ f_jfi=fj。构造一颗由 nnn 个节点构成的树满足对于每个节点的 fff 值与给定的值相同,或输出无解。 1⩽n⩽原创 2020-10-28 23:12:19 · 117 阅读 · 0 评论 -
线段树优化建图 树上的最短路
题目描述 题目中树边为双向边,之后增加的边为单向边。 题目要求树上两条链中的点两两连边,显然不能通过。对于链的问题,考虑树剖。将剖出来的重链用线段树优化建图,条链对应 O(log22n)O(log_2^2n)O(log22n) 个线段树节点,两两连边增加 O(log24n)O(log_2^4n)O(log24n) 条边,最后跑Dijkstra时间复杂度为 O(mlog25n)O(mlog_2^5n)O(mlog25n)。 每次加边增加一个点,将第一条链对应的线段树节点连向这个点,再由这个点连向所有第二原创 2020-10-27 20:49:02 · 233 阅读 · 0 评论 -
模拟赛 路径和
题目描述 对于一张有向图,定义 d(u,v,w)d(u,v,w)d(u,v,w) 为从 uuu 号点出发,不经过 vvv 号点,最终到达w号点的最短路径长度。如果不存在这样的路径,d(u,v,w)d(u,v,w)d(u,v,w) 的值为−1−1−1。 你也可以认为 d(u,v,w)d(u,v,w)d(u,v,w) 是删去 vvv 点和其相关的边后,图中 uuu 到 www 的最短路。 现在给定这张有向图每两个点之间的有向边的长度(如果不存在连边则为−1−1−1),对于所有满足 1⩽x,y,z⩽n,x≠y,y原创 2020-10-22 20:19:47 · 129 阅读 · 0 评论