ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图论网络流

2019-05-14 20:48:09  阅读:259  来源: 互联网

标签:度数 连边 图论 Ai 删掉 网络 kkk 权值


1

给定一棵树,每次可以选一个叶子删掉。同时有 mmm 个限制 (u,v)(u,v)(u,v) 表示 uuu 必须在 vvv 之前删掉。求可能最后一个被删掉的点的集合。

如果有一个 uvu\rightarrow vu→v 的限制,那么以 vvv 为根 uuu 的子树都不能选。之后把不能选的点之间定向,加上限制的边,如果有环就无解,否则可以证明解就是剩下的点。

2

给定一个字符串集合,求字符集大小为 kkk 且不包含任何一个集合中串的“双向无限”字符串个数。如果有无限个输出 -1。
k10100000k\leq 10,总串长\leq 100000k≤10,总串长≤100000

构建出字符串和字符集的 AC 自动机。判断 inf:
1.某个 scc 不是简单环;
2.某条路径经过三个不同 scc。
否则,一条合法的路径一定是从一个环出发,走一些路径,再到一个环。

3

有一个 w×hw\times hw×h 的 010101 矩阵 AAA,和一个 (w1)(h1)(w-1)*(h-1)(w−1)∗(h−1) 的矩阵 BBB,满足 Bi,j=Ai,j+Ai,j+1+Ai+1,j+Ai+1,j+1B_{i,j}=A_{i,j}+A_{i,j+1}+A_{i+1,j}+A_{i+1,j+1}Bi,j​=Ai,j​+Ai,j+1​+Ai+1,j​+Ai+1,j+1​
给你矩阵 BBB,请给出一个满足条件的矩阵 AAA。

添加辅助变量,每四个格子添加辅助变量表示哪些等于 000 ???

发现确定了第一行第一列和 A11A_{11}A11​ 之后,每个格子都可以由一坨 BBB 元素和两个 AAA 元素(该行第一个和该列第一个)算出。然后就是 2-sat 模型了。

田字格限制问题一般想一想确定了哪些东西以后解就是固定的了。

4

一棵树 mmm 对点,每次可以花费 111 的代价给一条边标记或者给一对点标记。满足每对未标记点的路径上的所有边都被标记。
n,m10000n,m\leq 10000n,m≤10000
要么点对被覆盖,要么之间所有边被覆盖。建二分图,左边是点对,右边是边,每个点对向它们之间所有的边。求最小割即可。向树上的一条路径连边,可以倍增或者树剖优化。

5

给定一个由单位正方体组成的物体的俯视图,求最多拿掉多少正方体使得三视图不变。
n,m&lt;=100n,m&lt;=100n,m<=100

首先满足俯视图。即俯视图不为零的都铺上一层。

答案的上界显然是每列最大值之和+每行最大值之和。什么时候答案会减小?就是行行和列公用最大值的时候。因此建立二分图,左边是行,右边是列,如果某行某列最大值相同并且这个格子可以放东西,就连流量 1 费用 最大值的边。跑最大费用流即可。

进一步观察发现权值相同的点才会联通,因此把权值相同的点拿出来跑最大流即可。

输赢分配问题

区间 kkk 覆盖问题
有一些区间,选择一个区间会产生一些收益。每个点覆盖它的区间最多不超过 kkk 个。
对于一个区间 [l,r][l,r][l,r],我们连边 lr+1l\rightarrow r+1l→r+1,流量 111,费用 kkk。求流量为 kkk 的最大费用流

答案的上界显然是不对移动进行限制的匹配。

考虑去调整匹配(变得合法)。如果匹配中士兵移动以后炸掉一个炮楼,然而不合法,那么他不移动的时候一定也可以炸掉一个炮楼。我们对他的匹配进行调整,匹配数不变。
非常有趣的调整。证明了上界总是可以达到的。

这一类网络流问题总是先去考虑答案的上界,然后用最小割/最大流来调整,或是直接证明了上界可以达到。

杂谈

边权小的时候用桶代替dij的堆。
k短路 可并堆

多sat(每个变量出现两次,一正一反)。包含a的子句和-a的子句连无相边 cf

完全图最小生成树:曼哈顿最小生成树:把平面分成八个方向,向每个方向曼哈顿最近的点连边。每个区域有两条限制,比如x>=x0,(y-y0)-(x-x0)>=0,一维排序扫描线,另一维按区域维护x+y最小值即可。

编号gcd:只有向他的倍数的点的连边才有用。
xor:boruvka?

最小生成环套树。直接kruskal。正确性:未选择的边一定不在答案内。

次小生成树:枚举非树边,删掉路径最大边。

给定每个点的度数,构造满足条件的图或树

1.要求没有重边:
每次选一个度最大的点,假设度数为 kkk,和度数前 kkk 大的点连边。

2.不要求:
充要条件是最大点度数小于等于总度数的一半并且总度数为偶数。构造方法是每次选择两个度最大的点连边。

3.不要求没有重边要求联通。

树:
合法当且仅当和为 2n22n-22n−2,且每个点至少是 111。
使用 prufer 序列,先提出叶子,和度数最大的点连边。维护两个集合,一个是叶子一个是非叶子。

prufer 序列:找到编号最小的叶子删掉,把邻接点放到序列里。直到剩两个点。每个点出现次数是 d1d-1d−1 次。

线性代数黑科技:
无向图的 dfs 树上给每个非树边分配一个随机整数权值,树边权值等于覆盖他的非树边权值的异或,一组边集是割集当且仅当对应权值线性相关。
割集只删掉这组边以后联通块数量增加了。线性相关指存在一个子集异或为 000。
dzyloves chinese。

支配树
DAG 上的做法较简单,一个点的支配点就是入边支配点的 Lca。

标签:度数,连边,图论,Ai,删掉,网络,kkk,权值
来源: https://blog.csdn.net/DT_Kang/article/details/86097368

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有