--------图论--------
文章平均质量分 92
Neo__Z
这个作者很懒,什么都没留下…
展开
-
LOJ#6389. 「THUPC2018」好图计数 / Count【生成函数】
传送门解题思路:终于卡过去了…… 这题和求无标号有根树个数的思路差不多,可以先看这里,因为下面一些公式演算会省略中间过程。设大小为 nnn 的好图数目为fnfnf_n,其中连通的数目为gngng_n 注意但n≥2n≥2n\ge 2时,不连通的好图和连通的好图一一对应,即gn=fn/2gn=fn/2g_n=f_n/2考虑生成函数F(x)=∑fixiF(x)=∑fixiF(x)=\...原创 2018-05-24 19:09:01 · 992 阅读 · 0 评论 -
bzoj4519: [Cqoi2016]不同的最小割【最小割树】
题目大意:求一张无向图中两两点之间不同的最小割的种数,n<=850,m<=8500;解题思路:即是要构造最小割树,统计不同边权的数量。 有一个结论:任意两点之间的最小割,不同的只有n-1个(然而不会证明……) 构造最小割树方法如下(分治+最小割): 1.集合中随便找两个点,求这两点的最小割 2.用求出的最小割更新s,t两个集合之间点的最小割(或者可以直接建边,那么最...原创 2018-05-09 11:48:10 · 259 阅读 · 0 评论 -
BJ模拟 cut【最小割树】
题目描述:有一张n个点的无向图,给出任意两点之间的最小割,求一张符合条件的图。 n&lt;=100解题思路:每张无向图都对应着一棵最小割树,而任意两点间的最小割即为最小割树上两点间的最小边,现在考虑如何建出这棵最小割树。 其实就是最大生成树,最后判断一下每对点是否满足即可。#include&lt;iostream&gt;#include&lt;algorithm&gt;...原创 2018-05-08 21:31:50 · 211 阅读 · 0 评论 -
BJ模拟 路径规划【树的直径】
题目描述:给定一棵有权无根树,求一条路径满足路径上边权的最小值与路径边权之和的乘积尽量大,输出最大乘积。1≤n≤3000001≤n≤3000001\le n\le 300000解题思路:思路肯定是将边从大到小加入,这样就是用找到经过这条边的最长链了。 那如何找经过这条边的最长链呢? 设这条边连接的两个联通块为S,TS,TS,T,其块内最长链分别是(a1,a2),(b1,b2)(a1...原创 2018-04-13 19:29:50 · 223 阅读 · 0 评论 -
BJ模拟 Delight for a Cat【费用流】
题目描述从前,有一只懒猫叫CJB。每个小时,这只猫要么在睡觉,要么在吃东西,但不能一边睡觉一边吃东西,并且这只猫会在一整个小时干同一件事情。 对于接下来的nnn个小时,CJB知道他在那n个小时睡觉和吃东西的快乐值。 为了健♂康♀地生活,在任意的连续kk k 个整小时内,CJB要有至少msms m_s 小时睡觉,至少 memem_e 个小时在吃东西。也就是说一共有n−k+1n−k+1 n−k...原创 2018-04-10 20:54:34 · 248 阅读 · 0 评论 -
bzoj3322: [Scoi2013]摩托车交易【最大生成树+倍增】
Descriptionmzry1992 在打完吊针出院之后,买了辆新摩托车,开始了在周边城市的黄金运送生意。在mzry1992 生活的地方,城市之间是用双向高速公路连接的。另外,每条高速公路有一个载重上限,即在不考虑驾驶员和摩托车重量的情况下,如果所载货物的量超过某个值,则不能驶上该条高速公路。今年,mzry1992 一共收到了来自n 个不同城市的n 份定订单,每个订单要求卖出上限为一定量的黄...原创 2018-03-27 19:32:27 · 246 阅读 · 0 评论 -
bzoj4945: [Noi2017]游戏【2-sat】
解题思路:乍一看以为是3-sat问题,但发现x最多只有8个,所以可以38383^8枚举禁止哪种赛车,又发现其实只用枚举禁止A(可选B,C)或B(可选A,C),这样A,B,C是否可选都被讨论过了。所以复杂度为O(2nn)O(2nn)O(2^nn)。 不知道为何uoj上第3个hack点TLE了……好像网上很多代码都会被卡……#include<bits/stdc++.h>#def...原创 2018-04-10 08:37:36 · 215 阅读 · 0 评论 -
bzoj [Ahoi2013]连通图【cdq分治+并查集】
DescriptionInputOutputSample Input4 51 22 33 44 12 431 52 2 32 1 2Sample OutputConnected Disconnected ConnectedHINTN<=100000 M<=200000 K<=100000解...原创 2018-03-19 10:39:50 · 369 阅读 · 0 评论 -
bzoj3545&&3551: [ONTAK2010]Peaks离线&&在线【线段树合并&&kruskal重构树&&主席树】
Description在Bytemountains有N座山峰,每座山峰有他的高度h_i。有些山峰之间有双向道路相连,共M条路径,每条路径有一个困难值,这个值越大表示越难走,现在有Q组询问,每组询问询问从点v开始只经过困难值小于等于x的路径所能到达的山峰中第k高的山峰,如果无解输出-1。Input第一行三个数N,M,Q。 第二行N个数,第i个数为h_i 接下来M行,每行3个数a ...原创 2018-03-04 12:06:14 · 254 阅读 · 0 评论 -
bzoj5251 【九省联考 2018】劈配 【网络流】
解题思路:一眼可看出是网络流,但如何建图才能满足优先性呢?注意dinic算法是可以边加边边增广的,如果知道这一点就比较好想了。首先我们建图,将所有导师向汇点连一条流量为招收学员上限的边,我们按次序枚举每一个学员的志愿,从原点向学员连流量为1的边,按当前枚举到的志愿由学员向导师连边,流量为1,然后开始增广,若失败,则删去这一志愿连的边,继续枚举下一志愿,若成功则这就是第一问答案,这样的话...原创 2018-05-02 16:52:49 · 298 阅读 · 0 评论 -
bzoj5297 [Cqoi2018]社交网络【矩阵树定理】
传送门解题思路:就是有向图的生成树定理,注意与无向图的不同。 1.题目是求反向树形图,基尔霍夫矩阵为(入度矩阵-邻接矩阵) 2.求余子式只能删去根节点所在行和列。#include<bits/stdc++.h>using namespace std;int getint(){ int i=0,f=1;char c; for(c=getchar()...原创 2018-05-03 13:58:42 · 247 阅读 · 0 评论 -
TopCoder SRM697 div1 hard【prufer序列】
题目大意:有n≤2000n≤2000n\le 2000个城市,每个城市有个权值wiwiw_i,任意两个城市之间的道路数有wi∗wjwi∗wjw_i*w_j条。对于每种生成树,设每个点的度数为didid_i,其权值定义为∏di∏di\prod d_i。问所有无根生成树的权值和。答案对109+7109+710^9+7取模。 解题思路:主要说一下思路和推导过程。 考虑生成树中的一条边 (i...原创 2018-05-17 11:02:22 · 306 阅读 · 0 评论 -
bzoj4609: [Wf2016]Branch Assignment
Description要完成一个由s个子项目组成的项目,给b(b&gt;=s)个部门分配,从而把b个部门分成s个组。分组完成后,每一组的任意两个点之间都要传递信息。假设在(i,j)两个点间传送信息,要先把信息加密,然后快递员从i出发到总部,再加密,在到j点。出于安全原因,每次只能携带一条消息。现在给出了道路网络、各个部门和总部的位置,请输出快递员要走的最小总距离。Input第一行包含四...原创 2018-05-15 19:53:24 · 503 阅读 · 0 评论 -
bzoj5288: [Hnoi2018]游戏【拓扑排序】
传送门解题思路:每个点可到达的都是一个区间,考虑如何求出这个区间。 暴力拓展肯定是O(n2)O(n2)O(n^2)的,看看有没有什么性质。考虑一扇门,如果钥匙在左边,那么右边的永远到不了左边。但左边一旦可以到右边,就可以走到右边可走的所有范围,所以我们从左边向右边连一条边,反之同理。然后我们按拓扑序处理。每次判断当前区间是否能向两边走,如果可以,就继续拓展,然后把这个区间的范围扩...原创 2018-05-08 17:21:41 · 407 阅读 · 0 评论 -
bzoj5329: [Sdoi2018]战略游戏【圆方树+虚树】
Description省选临近,放飞自我的小Q无心刷题,于是怂恿小C和他一起颓废,玩起了一款战略游戏。 这款战略游戏的地图由n个城市以及m条连接这些城市的双向道路构成,并且从任意一个城市出发总能沿着道路走到 任意其他城市。现在小C已经占领了其中至少两个城市,小Q可以摧毁一个小C没占领的城市,同时摧毁所有连接这 个城市的道路。只要在摧毁这个城市之后能够找到某两个小C占领的城市u和v,使得从...原创 2018-05-25 18:21:39 · 317 阅读 · 0 评论 -
bzoj5335: [TJOI2018]智力竞赛【二分+最小路径覆盖】
Description小豆报名参加智力竞赛,他带上了n个好朋友作为亲友团一块来参加比赛。 比赛规则如下: 一共有m道题目,每个入都有1次答题机会,每次答题为选择一道题目回答,在回答正确后,可以从这个题目的后续 题目,直达题目答错题目或者没有后续题目。每个问题都会代表一个价值,比赛最后的参赛选手获得奖励价值等价 于该选手和他的亲友团没有回答的问题中的最低价值。我们现在知道小豆和他的亲友团...原创 2018-05-21 14:56:08 · 353 阅读 · 0 评论 -
BJ模拟 医院【支配树】
题目描述:过年辣!放假辣!可是有个地方必须有人守着——医院。护士们也想放假,但是她们必须轮流放。现在医院正对放假这件事情头疼不已。在医院里,有两种共n位护士:k位特殊护士和n-k位普通护士。当一个普通护士放假时,是不会有任何问题的,因为随便找个人都可以代替她的工作。但是,当一个特殊护士放假时,必须有人来顶替她。对于每一个特殊护士来说,都有一个可以顶替该护士的护士名单。如果顶替的护士仍然为特...原创 2018-04-29 15:39:48 · 274 阅读 · 0 评论 -
BJ模拟 Problem B: Team Rocket Rises Again【最短路+支配树】
题目描述:给一张n个点,m条边,有源点S的无向图,求对于每个点,有多少个点的最短路必经过它。n<=100000,m<=300000解题思路:先跑一边最短路建出最短路DAG,然后就是求每个点的必经点,直接上支配树即可。#include<iostream>#include<algorithm>#include<vector>#inc...原创 2018-05-06 21:29:31 · 159 阅读 · 0 评论 -
BJ模拟 Mortal Kombat【二分图匹配+tarjan】
题目大意:给一张n个黑点,m个白点的二分图,问对于任意一对相连的黑白点对(i,j),判断边(i, j)是否能成为该二分图最大匹配的匹配边,能输出0,否则输出1。 n<=300,m<=1500,n<=m解题思路:先用匈牙利算法求一次最大匹配,则匹配边一定可以,所以就是判断非匹配边是否可以替换匹配边。 分两种情况讨论: 1.在最大匹配中的点对是否可以互相切换...原创 2018-05-06 20:19:12 · 223 阅读 · 0 评论 -
Codeforces908H. New Year and Boolean Bridges【并查集+强联通+FWT】
题目大意:有一个n个点的有向图。 定义i能到达j时f(i,j)=1,否则f(i,j)=0。 对于每个点对(i,j),给定以下三个条件中的某一个为真: (1) f(i,j) and f(j,i)=1; (2) f(i,j) or f(j,i)=1; (3) f(i,j) xor f(j,i)=1。 求满足条件时的最小边数。 1<=n<=47。解题思路:等价于满足...原创 2018-05-18 18:35:01 · 394 阅读 · 0 评论 -
bzoj3694: 最短路【树链剖分+线段树&&最短路】
Description给出一个n个点m条边的无向图,n个点的编号从1~n,定义源点为1。定义最短路树如下:从源点1经过边集T到任意一点i有且仅有一条路径,且这条路径是整个图1到i的最短路径,边集T构成最短路树。 给出最短路树,求对于除了源点1外的每个点i,求最短路,要求不经过给出的最短路树上的1到i的路径的最后一条边。Input第一行包含两个数n和m,表示图中有n个点和m条边。 ...原创 2018-03-04 18:38:39 · 352 阅读 · 0 评论 -
bzoj3995: [SDOI2015]道路修建【线段树维护最小生成树】
Description某国有2N个城市,这2N个城市构成了一个2行N列的方格网。现在该国政府有一个旅游发展计划,这个计划需要选定L、R两列(L<=R),修建若干条专用道路,使得这两列之间(包括这两列)的所有2(R-L+1)个城市中每个城市可以只通过专用道路就可以到达这2(R-L+1)个城市中的任何一个城市。这种专用道路只能在同一行相邻两列的城市或者同一列的两个城市之间修建,且修建需要花费...原创 2018-02-28 10:10:31 · 418 阅读 · 0 评论 -
bzoj1006 神奇的国度【完美消除序列】
解题思路:题目要求的就是用最少的颜色,使相连两点颜色不相同。有结论如下: 最小染色数=最大团大小 Proof. 不可能比这个更小,只需证这个是可行的。考虑按完美消除序列倒序把所有点加进来,每个点只需和所有当前相邻的点不同颜色即可,而当前所有相邻的点最大是最大团大小。所以只需用最大势算法求出完美消除序列,倒着加点统计即可。#include<cstdio>#include<iostream>原创 2017-12-17 22:05:20 · 318 阅读 · 0 评论 -
bzoj2395 Timeismoney【最小乘积生成树】
解题思路:题目即是求令∑ci∗∑ti\sum c_i*\sum t_i最小的生成树。我们把∑ci\sum c_i看做横坐标xx,∑ti\sum t_i看做纵坐标yy,要求k=xyk=xy最小,即是使得函数y=kxy=\frac{k}{x}最接近坐标轴。而一个点对应了一个函数,这些函数要么重合,要么不相交。 所以我们要找的点一定在一个左下部分的凸包上。看网上的题解求凸包左下部分都是用的分治法。1.首原创 2017-12-22 18:14:50 · 421 阅读 · 0 评论 -
bzoj1023 仙人掌图【仙人掌&&树形dp】
解题思路:f[i]表示以i为根的子树中i为起点的最长链。若(u,v)是桥,则ans=max(ans,f[u]+f[v]+1)(此时f[u]还未被f[v]更新),接着f[u]=max(f[u],f[v]+1);这也是树的直径的一种解法。若u是环上的一个点,设该环大小为cnt,则ans=max(ans,f[u]+f[v]+dis(u,v))其中v也为该环上一点且dis(u,v)<=cnt/2(不然就走环原创 2017-11-22 16:52:47 · 329 阅读 · 0 评论 -
NOIP模拟 做运动【并查集+最短路】
题目大意:给定无向图G,求在经过最大边最小的情况下S到T的最短路。 2≤\len≤\le500000,1≤\lem≤\le1000000;解题思路:考试时以为最大的最小就是二分套最短路,事实证明nlog2nnlog^2n的复杂度要跑四五秒,gg了。结果要求的最大边就是把所有边排序后从小到大取,使S、T联通的那一条边,接着在所有长度小于等于它的子图上跑最短路就行了。这样就是nlogn的了。#incl原创 2017-10-26 18:51:15 · 410 阅读 · 0 评论 -
bzoj4264 小c找朋友 【边集hash】
Description幼儿园里有N个小C,两个小C之间可能是朋友也可能不是。所有小C之间的朋友关系构成了一个无向图,这个无向图中有M条边。 园长ATM发现对于两个(不同的)小Ci和j,如果其他的所有小C要么同时是i,j的朋友,要么同时不是i,j朋友的话,这两个小C就很有可能一起去吃饭,成为一对好友。出于一些未知的原因,ATM需要你帮他求出可能成为好友的小C的对数。 Input第一行一个数N,原创 2017-10-16 14:54:09 · 329 阅读 · 0 评论 -
NOIP模拟 路径统计 【弗洛伊德算法】
题目大意:一个n个点m条边的无重边无自环的无向图,点有点权,边有边权,定义一条路径的权值为路径经过的点权的最大值乘边权的最大值。 求任意两点间的权值最小的路径的权值。(1<=n<=500)解题思路:看到n<=500就想到了弗洛伊德算法,但怎么处理呢? 普通的弗洛伊德算法是按点的标号顺序枚举k的,这里我们可以按点权从小到大的顺序枚举k,那么计算时任意两点间的最大点值只能是i,j,k中的一个,现在就原创 2017-11-10 07:49:41 · 390 阅读 · 0 评论 -
bzoj 2143 飞飞侠【最短路】
解题思路:这道题点很少,但是边可能很多,直接建图做最短路显然不可行。 但是如果把弹射看成获得了可以走a[i][j]的能量。 这样就可以直接最短路了。 每走一格可看作消耗1的能量,f[i][j][k]表示在i,j这个点且有k的能量的最少费用。 每次只要向四个方向走,或者原地不动即可。 做三次最短路即可。#include<iostream>#include<cstdio>#include<原创 2017-10-31 17:19:32 · 329 阅读 · 0 评论 -
NOIP模拟 星星 【图论】
题目大意:给定一个无重边自环的无向图,问图中有多少对共边三元环。如: (n,m≤\le100000)。解题思路:最朴素的思路是枚举每一条边看它在多少个三元环内,也就是改变两端点所连相同点的个数,设为cnt,那么就会产生C2cntC_{cnt}^2个共边三元环。这样的复杂度是O(nm)的。但我们对于每个点,可以先把它连的点打上标记,再枚举所有与它相连且度比它小的点的边集来求每条边的贡献,可以证明原创 2017-10-30 18:45:11 · 325 阅读 · 0 评论 -
bzoj3103or3350 Palindromic Equivalence/相似回文串【manacher+并查集+完美消除序列】
解题思路:我们可以先用manacher和并查集处理出哪些位置必须要填相同的字母,再把每个并查集看做一个点,再向和该并查集必须填不同字母的并查集连边,可以证明这样构造出的是一个弦图,详见:http://foreseeable97.logdown.com/posts/194507-herbicidalontak2010palindromic-equivalence然后就成了弦图染色问题了,求一边完美消除原创 2017-12-18 15:00:29 · 447 阅读 · 0 评论 -
bzoj4006 管道连接【斯坦纳树+子集dp】
解题思路:题目要求的即为最小斯坦纳森林。 我们可以枚举颜色种类的一个子集S,把颜色属于S的关键点提出来求一次最小斯坦纳树,设最小值为g[S],那么最后子集dp一波:g[S]=min(g[S],g[i]+g[S^i])(i∈\inS)。求最小斯坦纳树的方法源于状压dp: 设f[i][s]表示以i为根的子树中关键点联通状态为s的边权和最小值,那么转移方程有两种,分别为: f[i][s]=min(f原创 2017-12-26 20:50:38 · 317 阅读 · 0 评论 -
bzoj2118 墨墨的等式【最短路+背包问题】
解题思路:相当于无限背包求可行方案数。取任意一个a[i],设为p;那么考虑令d[i]表示当物体的总重%p=i时,物体最少的重量。设d[i]=t,那么显然对于所有的x,如果x%p=i且x>=t,都可以用总重最少的那个方案再加上若干个p得到。同时,考虑加入一个物体u,那么显然有d[(i+u)%p]可以由d[i]+u得到,这相当于从i向(i+u)%p连一条长度为u的边,那么d[i]求最小值不就是求最短路吗原创 2017-12-30 17:15:41 · 563 阅读 · 0 评论 -
bzoj4025: 二分图【LCT维护生成树】
Description神犇有一个n个节点的图。因为神犇是神犇,所以在T时间内一些边会出现后消失。神犇要求出每一时间段内这个图是否是二分图。这么简单的问题神犇当然会做了,于是他想考考你。Input输入数据的第一行是三个整数n,m,T。 第2行到第m+1行,每行4个整数u,v,start,end。第i+1行的四个整数表示第i条边连接u,v两个点,这条边在start时刻出现,在第end...原创 2018-03-07 19:41:43 · 246 阅读 · 0 评论 -
bzoj1018: [SHOI2008]堵塞的交通traffic【线段树维护连通性】
Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国。小人国的布局非常奇特,整个国家的交通系统可 以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总共有2C个 城市和3C-2条道路。 小人国的交通状况非常槽糕。有的时候由于交通堵塞,两座城市之间的道路会变得不连通, 直到拥堵解决,道路才会恢复畅通。初来咋到的你决心毛遂自...原创 2018-02-27 19:31:43 · 323 阅读 · 0 评论 -
bzoj3693: 圆桌会议【线段树+Hall定理】
Description有n组人要一起开一个圆桌会议(编号为0~n-1),会议的圆桌上有m个位置(编号为0~m-1)。每个组有ai个人,他 们需要被安排在(li,(li+1)%m,(li+2)%m,…,ri)的座位范围内。每个座位只能安排一个人就坐,并且每个人 都需要被安排一个座位。现在你需要判断是否存在满足条件的座位安排。Input输入包含不超过10组数据。 第一行有一个数字...原创 2018-03-07 14:28:34 · 559 阅读 · 0 评论 -
bzoj3456 城市规划【生成函数+多项式求逆元】
解题思路我们设f(n)f(n)表示nn个点组成有编号无向连通图的方案数,但不是很好直接求。那再设g(n)g(n)表示nn的点组成有编号无向图的方案数,由于无向图是由多个连通子图构成,那么为了避免重复计数,我们枚举1号点所在连通块大小,其他边随便连,即可得到dp方程:g(n)=∑i=1nCi−1n−1f(i)∗g(n−i)g(n)=\sum\limits_{i=1}^nC_{n-1}原创 2018-01-16 20:47:43 · 314 阅读 · 0 评论 -
bzoj3597: [Scoi2014]方伯伯运椰子【分数规划+费用流】
Description四川的方伯伯为了致富,决定引进海南的椰子树。 方伯伯的椰子园十分现代化,椰子园中有一套独特的交通系统。现在用点来表示交通节点,边来表示道路。这样,方伯伯的椰子园就可以看作一个有 n+2 个交通节点,m 条边的有向无环国。n+1 号点为入口,n+2号点为出口。每条道路都有 6 个参数:ui ,vi ,ai ,bi ,ci ,di ,分别表示,该道路从 ui 号点通向原创 2018-02-03 20:23:49 · 444 阅读 · 0 评论 -
bzoj5093 图的价值【第二类斯特林数+NTT】
解题思路:考虑直接枚举每个点连的边,图中其余点之间随便连,那么直接推式子:ans=n∗2C2n−1∑i=0n−1Cin−1ikans=n*2^{C_{n-1}^2}\sum\limits_{i=0}^{n-1}C_{n-1}^ii^k不妨用nn表示n−1n-1,而iki^k可用第二类斯特林数表示,则有:ans=(n+1)∗2C2n∑i=0nCin∑j=0iSjkCjij!ans=(原创 2018-01-16 22:57:00 · 831 阅读 · 0 评论 -
bzoj3569: DZY Loves Chinese II【线性基】
解题思路:这是一道套路题. 先 DFS 出一个生成树, 对于非树边随机一 权值, 树边的权值为覆盖它的非树边的权值异或和,这个可以2遍dfs处理。 然后删掉指定的 k 条边后原图不连通当且仅当这些边的权值存在一个异或和为 0 的子集。 然后求线性无关组,看是否有一条边的权值是非线性基即可。#include#define ll unsigned long longusing n原创 2018-01-05 22:20:23 · 311 阅读 · 0 评论