图论
_beginend
这个作者很懒,什么都没留下…
展开
-
bzoj 4238: 电压 dfs树
题意给出一个无向图,问有多少条边满足存在一种黑白染色方案,使得有且仅有该边连接两个同颜色的点。 n<=10^5,m<=2*10^5分析按照套路我们要先把dfs树搞出来,然后讨论一波。 我们把点按照深度的奇偶性来染色,设那些连接相同颜色的边为垃圾边,然后开始讨论。 若没有垃圾边,那么原图是一个二分图,我们就只能删那些割边。 若存在垃圾边的话,如果只有一条垃圾边,那么我们可以删掉这条垃圾边,反之原创 2017-12-31 09:46:49 · 338 阅读 · 0 评论 -
【Codeforces 827F Dirty Arkady‘s Kitchen】【图论】
题意给一个 nnn 个点 mmm 条边的无向图,经过每条边的时间为 111,每条边有一个可以使用的时间区间 [li,ri][l_i,r_i][li,ri]。每个时刻必须移动到与当前点有边相连的一个点上。问从 111 到 nnn 花费的最小时间。n,m≤5∗105n,m\le 5*10^5n,m≤5∗105分析注意到可以在一条边上反复横跳,不妨把点按照奇偶性拆分成两个,边按照两个方向和奇偶性拆分成四条。维护 latex,0/1late_{x,0/1}latex,0/1 表示在奇/偶时刻到达 x原创 2020-07-17 10:26:03 · 308 阅读 · 0 评论 -
【Comet OJ - Contest #15 G 孤独的吉姆 6】【图论】
题意给一个nnn个点mmm条边的简单无向连通图,要删掉一些边,使得度数为奇数的点尽可能多。输出长度为mmm的010101串,000表示删掉第iii条边,111表示不删,要求输出字典序最大的方案。n≤6∗105,m≤9∗105n\le6*10^5,m\le9*10^5n≤6∗105,m≤9∗105分析比赛结束后几分钟调过了这题,错失了AK的大好机会。对于两个能够互相到达的点,我们可以通过对...原创 2019-11-23 23:29:45 · 377 阅读 · 0 评论 -
【Codeforces 1257G Divisor Set】【Dilworth定理+分治FFT】
题意设x=p1p2⋯pnx=p_1p_2\cdots p_nx=p1p2⋯pn,其中pip_ipi为质数,要求在xxx的所有约数中选出尽可能多的数组成一个集合,使得集合内的数互不整除,NTT模数。n≤2∗105,pi≤3∗106n\le2*10^5,p_i\le3*10^6n≤2∗105,pi≤3∗106分析比赛结束前几分钟才想到所以时间不够,果然退役之后手速下降的厉害啊。把每...原创 2019-11-14 01:14:13 · 535 阅读 · 2 评论 -
【Comet OJ - Contest #14 E 飞翔的小鸟】【图论】
题意给一个nnn个点mmm条边的有向图,对每个点xxx求从111到xxx的所有路径中边权极差最大是多少。n≤200000,m≤500000n\le200000,m\le500000n≤200000,m≤500000分析先缩点,这样新图里的点也有了点权。假设先经过最小值再经过最大值,那么枚举经过最大值之前经过的最后一条边,预处理fxf_xfx表示走到xxx经过的最大权值,就可以知道每一条...原创 2019-11-12 17:15:21 · 237 阅读 · 0 评论 -
Codeforces 913F Strongly Connected Tournament 期望dp+图论
题意分析tourist出的题,果然比较牛逼。因为两两点对之间获胜的概率确定,所以答案只跟点的数量有关。设ans(s)ans(s)表示点数为s时的答案。 边界条件是ans(0)=ans(1)=0ans(0)=ans(1)=0 ,有递推式ans(s)=∑i=1sstrong(i)∗cp(s,i)∗(i∗(s−i)+i∗(i−1)2+ans(s)+ans(s−i))ans(s)=\原创 2018-01-15 17:13:10 · 625 阅读 · 0 评论 -
AtCoder Grand Contest 010 E - Rearranging 拓扑排序+贪心
题意有一个数组A。现在先手可以把整个数组任意排列,然后后手可以任意次交换两个相邻且互质的数。先手要使得字典序尽量小,后手要使得字典序尽量大。问最后的序列长什么样。 n分析首先很容易想到两个不互质的数的相对位置不能发生改变。 考虑在两个不互质的数之间连边,于是可以得到若干个连通块。 先手的操作可以看成是对每条边定向,使得任意一个连通块都是一个有向无环图。 接下来后手的操作就是找到原创 2018-02-06 17:47:38 · 376 阅读 · 0 评论 -
AtCoder Regular Contest 076 F - Exhausted? 霍尔定理+线段树
题意有m张凳子,第i张凳子的坐标为i。现在有n个人,第i个人可以选的凳子的编号不能大于Li或不能小于Ri。问最少添加多少张凳子才能使得每个人都有凳子坐。 n,m<=200000分析霍尔定理:若二分图G存在完美匹配,则对于X部的任意一个子集,和该子集有连边的Y部的点数不能小于该子集大小。 霍尔定理同样可以用于求最大匹配:设Γ(X)Γ(X)\Gamma(X)表示与集合X有连边...原创 2018-02-17 11:42:27 · 569 阅读 · 0 评论 -
AtCoder Regular Contest 078 F - Mole and Abandoned Mine 状压dp
题意给出一个无向连通图,每条边都有一个删掉的代价。问最少花费多少代价来删边使得1到n恰好只存在一条简单路径。 n<=15分析正着搞不好搞,我们考虑最多能加多少边。 我的做法是状压出每一条路径,发现要想只存在一条简单路径的话,该路径上任意两个点都不能在同一个点双连通分量内。那么我们每次就可以给某个点连上一个连通块。然后就每次枚举哪一个连通快接到哪一个点上,这样的话复杂度会多...原创 2018-02-20 16:58:39 · 311 阅读 · 0 评论 -
Codeforces 429E Points and Segments 欧拉回路
题意给出nnn条线段[li,ri][li,ri][l_i,r_i],现在要把每条线段染成红色或蓝色,要求对于每个点xxx,设有rxrxr_x条线段满足覆盖点x且被染成红色,bxbxb_x条线段被染成蓝色,要求满足|rx−bx|≤1|rx−bx|≤1|r_x-b_x|\le1。输出方案。 n≤105n≤105n\le10^5分析对于被覆盖偶数次的点,覆盖他的红色线段数和蓝色线段数必...原创 2018-04-18 21:43:08 · 280 阅读 · 0 评论 -
uoj #117. 欧拉回路 圈套圈算法求欧拉回路
题意给你一个有向图或无向图,要求输出其中一条欧拉回路。 n≤100000n≤100000n\le100000分析圈套圈算法求欧拉回路的模版题。 这个算法大概是,从某个点开始走,然后用一个栈存放所有走过的点。当走到死胡同时就在退栈的同时加边,直到退到某个点仍然存在出边,然后继续沿着出边走下去。最后把所有边按照加边顺序跑一边即可。 这可以看成是先找到一个环,然后再找到另一个环,接...原创 2018-06-26 11:42:03 · 1660 阅读 · 0 评论 -
【Codeforces 1142E Pink Floyd】【图论+交互】
题意有一个nnn个点的竞赛图,其中mmm条边被染成粉色且方向已知,其他边被染成绿色且方向不知。每次可以询问一条绿边的方向,最多询问2n2n2n次。求一个点ppp,使得对于任意一个点qqq,都存在一条从ppp到qqq的路径满足路径上的每一条边颜色都相同。n,m≤105n,m\le10^5n,m≤105分析考虑没有粉边的限制要怎么做。可以先随便找一个点xxx,记录这个点通过已知边能够到达的点集...原创 2019-07-31 15:05:00 · 221 阅读 · 0 评论 -
bzoj 4479: [Jsoi2013]吃货jyy 欧拉回路+状压dp
题意世界上一共有N个JYY愿意去的城市,分别从1编号到N。JYY选出了K个他一定要乘坐的航班。除此之外,还有M个JYY没有特别的偏好,可以乘坐也可以不乘坐的航班。 一个航班我们用一个三元组(x,y,z)来表示,意义是这趟航班连接城市x和y,并且机票费用是z。每个航班都是往返的,所以JYY花费z的钱,既可以选择从x飞往y,也可以选择从y飞往x。 南京的编号是1,现在JYY打算从南京出发,乘坐所有K原创 2018-01-03 16:41:03 · 644 阅读 · 1 评论 -
bzoj 2387: [Ceoi2011]Traffic 强连通分量+dp
题意格丁尼亚的中心位于Kacza河中的一座岛屿。每天清晨,成千上万辆汽车通过岛屿从西岸的住宅区(由桥连接岛的西部)到东岸的工业区(由桥连接岛的东部)。 该岛类似于矩形,它的边平行于主方向。故可将它看作是笛卡尔坐标系中的一个A*B的矩形,它的对角分别为(0, 0)和(A, B)。 岛上有n个交通节点,编号为1…n(junction, 此处可理解为广义的路口),第i个节点坐标为(xi, yi)。如果原创 2017-12-16 15:18:23 · 679 阅读 · 0 评论 -
51nod 1833 环 状压dp+图论
题意有一个有向图。这张图有n个点和m条有向边。 他很好奇不相交的环(简单环)来覆盖所有点的方案数(数字可能很大请模998,244,353)。 1<=n<=20,1<=m<=n*(n-1)分析我好菜呀,比赛的时候一堆人都切了然而我想了一晚上都还是不会。。。其实,不相交的环覆盖数量就相当于把原图变成二分图后完美匹配的方案数。 具体来说就是对于原图中一条i->j的边,变成i->j’。 然后就可以随原创 2017-10-30 07:41:16 · 449 阅读 · 0 评论 -
bzoj 3281: 小P的烦恼 支配树算法+dp
题意小 P 最近遇上了大麻烦,他的高等代数挂科了。于是他只好找高代老师求情。善良的高代老师答应不挂他,但是要求小 P 帮助他一起解决一个难题。 问题是这样的,高代老师近期要组织班上同学一起去漂流,漂流可以看做是在一张 n 个点 m 条边的有向无环图上进行的,点编号从 0 到 n-1 ,表示景点; 边是连接各景点的一定长度的河道。同时,定义编号为 s 是起点而 t 是终点。我们不妨把从 s 点到 t原创 2017-08-08 15:20:40 · 616 阅读 · 0 评论 -
51nod 1676 无向图同构 hash
题意如果一个无向图重标号后与另一个无向图完全一致(即对于任意两点,他们之间的边在两个图中都存在或都不存在),则称两个无向图同构。 给定两个n个点m条边的无向图,判定两个无向图是否同构。 n<=200,m<=4000分析初始时设每个点为点权为1,之后进行n次迭代,每次迭代每个点的值更替为与其相邻的点和他本身上一次迭代后的权值排序后计算出的hash值。 如果两个无向图同构则n次迭代后,所有权值排序原创 2017-08-17 16:16:40 · 1303 阅读 · 0 评论 -
bzoj 4484: [Jsoi2015]最小表示 拓扑排序+bitset
题意对于一个N个点(每个点从1到N编号),M条边的有向图,JYY发现,如果从图中删去一些边,那么原图的连通性会发生改变;而也有一些边,删去之后图的连通性并不会发生改变。JYY想知道,如果想要使得原图任意两点的连通性保持不变,我们最多能删掉多少条边呢?为了简化一下大家的工作量,这次JYY保证他给定的有向图一定是一个有向无环图 n<=30000,m<=100000分析如果我们单分析一条边在什么情况下会原创 2017-07-27 20:42:20 · 355 阅读 · 0 评论 -
bzoj 3569: DZY Loves Chinese II dfs树+线性基【神题】
题意给出一个无向图,每次询问删掉给定的k条边后图是否仍然连通。强制在线。 n<=100000,m<=500000,q<=50000,k<=15分析记得之前有位大爷告诉我说无向图的题有时候用dfs树会有奇效。这题的题解十分的巧妙,我们可以先把原图的一棵dfs树求出来,然后对于每条非树边,给其赋一个随机权值;对于每条树边,其权值为所有包含它的非树边的权值异或和。那么图不连通,当且仅当一条树边和所有包含原创 2017-09-04 21:35:31 · 482 阅读 · 0 评论 -
bzoj 1565: [NOI2009]植物大战僵尸 最大权闭合子图+拓扑排序
题意链接分析首先按照题目给出的保护关系可以建出来一个DAG,然后就是裸的最大权闭合子图了。但不难发现会出现环的情况,所以要先把图反向然后把不能拓扑排序的点给去掉就好了。代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using n原创 2017-08-31 20:32:32 · 324 阅读 · 0 评论 -
平面图欧拉公式的精彩证明
在网上看到的一个十分简洁直观的证明,就忍不住想记录下来。 在介绍这个证明之前,让我们先来回顾一下什么是Euler公式。Euler公式是说,在一个由若干顶点和它们之间的一些不相交的边所组成的图中,等式V+F=E+2总成立,其中V表示顶点个数,E表示总的边数,F表示这个图分割出来的区域个数(包括一个“外部区域”,例如一个圆把平面分割为两个区域)。如图1,这个图共有6个顶点、10条边和6个区域,可以看到转载 2017-09-20 20:57:27 · 9991 阅读 · 2 评论 -
bzoj 1997: [Hnoi2010]Planar 2-SAT+平面图
题意 分析首先这题有一个很棒棒的结论,就是如果m>n*3-6的话那么这个图一定不是平面图。证明的话。。。据说离散书上面有。 那么我们就可以将边数变为600的大小。 注意到因为这是一个环,所以一条边要么在环内,要么在环外。所以对于两条相交的边,肯定是一条在环内,一条在环外。那么只要暴力2-SAT建图+判定就好了。代码#include<iostream>#include<cstdio>#inc原创 2017-09-20 21:37:07 · 308 阅读 · 0 评论 -
bzoj 3706: 反色刷 欧拉回路+并查集
题意给一张无向图,边有黑白两种颜色,现在你有一堆反色刷,可以从任意点开始刷,经过若干条边后回到起点。 现在要询问至少需要多少个反色刷可以使这张图所有边都变成白色。 因为某种原因,边的颜色是会改变的,于是。。 需要支持以下操作: 1 x 把第x条边反色(编号从0~m-1) 2 询问当前图中最少需要多少个反色刷 100% n,m,q <= 1000000, c < 2,没有重边自环分原创 2017-11-10 20:29:42 · 429 阅读 · 0 评论 -
bzoj 2109: [Noi2010]Plane 航空管制 贪心+拓扑排序
题意世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频 发生。最近,小X就因为航空管制,连续两次在机场被延误超过了两小时。对此, 小X表示很不满意。 在这次来烟台的路上,小 X不幸又一次碰上了航空管制。于是小 X开始思考 关于航空管制的问题。 假设目前被延误航班共有 n个,编号为 1至n。机场只有一条起飞跑道,所 有的航班需按某个顺序依次起飞(称这个顺序为起飞序列)。定义一个航班的起原创 2017-11-02 20:03:14 · 436 阅读 · 0 评论 -
bzoj 2815: [ZJOI2012]灾难 支配树
题意给出一个有向无环图,问把每个点分别删掉后有多少个点不能从入读为0的点到达。 n<=100000分析直接把支配树建出来,然后一个点的答案就是它在支配树上的size-1.代码#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<queue>using原创 2017-08-16 14:29:34 · 499 阅读 · 0 评论