图论
geng4512
蛤蛤蛤蛤
展开
-
HDU 1150 Machine Schedule(最小点覆盖)
HDU 1150 Machine Schedule(最小点覆盖)Time Limit:1000MS Memory Limit:10000KB DescriptionAs we all know, machine scheduling is a very classical problem in computer science and has been studied for a very原创 2015-07-27 17:59:42 · 658 阅读 · 0 评论 -
HDU5361 In Touch(线段树 + 最短路)
传送门 恰逢才做过VFK的A+B Problem,发现这道题也可以那样搞。区间连边的时候,我们就可以给那个区间在线段树对应的标号上连边。 线段树也可以不建出来,直接当做一个标号的合集,不占用内存,只用模拟在线段树上找区间的过程就可以了。 如果不清楚的话,可以看下A+B Problem的题解里面配有插图。 连好边之后就可以直接跑DijkstraDijkstra。 分析一下时间复杂度,线段树节原创 2016-02-24 12:56:26 · 1091 阅读 · 0 评论 -
BZOJ3140 HNOI2013消毒
传送门 这道题有毒 我在做的时候就在想有没有一个什么“三分图”的匹配?(脑洞打开) 发现想不出来了,有观察到a,b,c中最小的最大只有17(a∗b∗c==5000)=>(min(a,b,c)<=50001/3)(a*b*c == 5000) =>(min(a, b, c) <={5000}^{1/3})就又写起了搜索……(因为每一次肯定可以通过选取1*x*y的一块矩形,最终得到最优解) 最原创 2016-01-16 00:58:55 · 987 阅读 · 0 评论 -
NOIP2015 运输计划
传送门题目描述公元 2044 年,人类进入了宇宙纪元。 L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球。 小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去。显然,飞船驶过一条航道是需要时间的,对于航道 j,任意飞船驶过它所花费的时间原创 2015-11-20 10:59:25 · 3164 阅读 · 0 评论 -
BZOJ1036: [ZJOI2008]树的统计Count (树链剖分)
传送门 这是一道树链剖分的基础题目,只需要用线段树来维护重链上的节点信息,轻链一条一条爬就行了,在查询的时候可以先求出LCA然后查询两个点到LCA的信息然后合并就行了。 代码:/************************************************************** Problem: 1036 User: geng4512 Langua原创 2015-11-22 16:04:18 · 456 阅读 · 0 评论 -
POJ3169 Layout (差分约束系统)
传送门 题意:有N头牛,第i头牛一定在第i-1头和第i+1头中间(按照编号从小到大排列)给出两种约束 1. A 到 B 的距离不超过 D 2. A 到 B 的距离小于 D 要求第N头到第一头的距离最远。若无解,输出-1,若无限远,输出-2.用dis(i)表示从第一头牛到第i头牛的距离,所以 -对于条件1有:dis(A) + D >= dis(B) 连一条从A到B的有向边权值为D(因为最原创 2015-08-11 21:36:37 · 773 阅读 · 0 评论 -
[NOIP2010]关押罪犯(二分+二分图染色)
传送门 大意:我们把图分为两部分,使得两部分中的内部边的最大权值最小。 思路:哎,拿到题的时候想了二分图染色,发现不好做,但我没有想到二分,只好最后去骗了一个30分。正确的思路是:首先我们要 去二分最大的冲突边的是哪一条(按照权值二分),因为当二分的边权增大时,连的边也就越少,连通块的数目就越多,冲突就越少,所以边权是可以二分的,在二分过后用二分图判定,如果可以染成二分图即为可行的解。代码:#i原创 2015-08-17 08:33:24 · 1864 阅读 · 0 评论 -
[NOIP2010]引水入城
传送门 思路:拿到这道题我就开始想不到正解就开始应该怎么搜(汗),不过还是好,能拿到70分(因为我舍弃了一种情况,就是从一个蓄水站往下走到另外一个沿湖城市,这种搜了很花时间)。听到正解发现我的思路真是不够,真是不行,我们可以发现每一个沿海城市能够到达的城市是连续的,所以我们就可以用一个N³搜索将原问题转化为一个区间覆盖问题,然后就可以水过了。代码:#include<cstdio>#include原创 2015-08-17 08:48:04 · 2662 阅读 · 0 评论 -
ZOJ3080 ChiBi (最短路)
传送门 大意:有N艘船,有一些通过铁索连在一起,每条铁索都有一个长度,现在可以派遣一些士兵去点燃一些船,火会在相连的船之间传播,传播速度是1m/s.每个士兵只能点燃一艘船。现在你知道每条铁索的长度,以及从你的大本营派兵到每条船所需的时间。由于点燃船是一件很危险的事,所以要在派遣最少数量的士兵的条件下(就是每一个连通块派一个士兵),使得所有船被点燃的时间最早 思路:先求出每一个连通块,在每一个连通原创 2015-08-15 22:03:42 · 632 阅读 · 0 评论 -
POJ1523 SPF (求割点)
传送门 题目大意:求出每一个割点能将图分成几个部分。思路:乱搞O(∩_∩)O(遇见割点,在对应的数组里加1就行了),但是要注意输出格式很坑,每次要多输出一个空行。#include<cstdio>#include<cstring>#define min(a,b) (a)<(b)?(a):(b)#define MAXN 5005#define MAXM 20005struct node{原创 2015-07-20 13:51:17 · 727 阅读 · 0 评论 -
POJ3621 sightseeing cows 01分数规划+SPFA判定
传送门 题目:给出N个点M条有向边,要求选出一个环,使得这上面 点权和/边权和 最大。 思路:明显的01分数规划,只是这里的判定不是很好搞。我们先按着分数规划的思路来。设Xi={0,1}Xi = \{0, 1\},Yi={0,1}Yi = \{0, 1\}, R=∑Vi∗Xi∑Wj∗Yj\ R = \frac{∑Vi*Xi}{∑Wj*Yj} 所以有判定函数 F(R)=∑Vi∗Xi−R∗∑Wi∗原创 2015-08-12 14:06:15 · 1330 阅读 · 1 评论 -
NOIP2013货车运输(最大生成树+LCA)
货车运输这道题我觉得还是比较有难度,不好直接想出正解,我最开始就是直接用并查集判定然后暴力找,在网上只有10分。//以下是暴力#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define MAXN 10005#define MAXM 50005#define MAXP 30005inlin原创 2015-08-11 08:41:02 · 2611 阅读 · 0 评论 -
HDU 1151 Air Raid (最小路径覆盖)
传送门题目大意:有N个路口M条路。给出你每条路的起点和终点,让你求出最少要放几个士兵(每个士兵只能沿着一条路走且不能与其他士兵的路线有交集)才能走完整个图。因为这是一道最小路径覆盖的裸题,所以我就写一下自己的理解。做最小路径覆盖,首先要拆点,把每个点拆成两个,一个表示出,一个表示进。然后进行最大匹配,因为二分图每一个顶点都只能有一条匹配边,所以保证了路径不交叉。对于结论:最小路径覆盖数 = 顶点数原创 2015-07-28 15:27:00 · 762 阅读 · 0 评论 -
HDU3729 I'm Telling the Truth(二分图最大匹配)
传送门题目大意:有N个学生,老师询问每个学生的排名,每个学生都告诉了一个排名区间,求可能的最多的学生说实话的个数,以及那些学生的标号,有相同的则输出字典序最大的。建模:对于每一个学生连上对应区间的每一个点,然后求最大匹配就行了。这里有一个优化,就是当某个学生给出的排名区间的范围大于N之后就可以不用加边了,因为他肯定是可以说真话的———–PS:不加这个优化也能过给出代码#include<cstdio>原创 2015-07-28 15:53:01 · 873 阅读 · 0 评论 -
POJ3041 Asteroids(最小点覆盖)
传送门 大意:N*N的方格里有K个障碍物(小行星)。我们要清除这些障碍物。对于每一次操作,我们可以清除一行或一列上的障碍物。求最少的操作次数。建模:把每一行每一列看做一个状态。如果i行j列有一个障碍,就把第i行和第j列连一条边。这样我们的问题就转化成了最小点覆盖(想想为什么,因为每一列或每一行是一个点,我们就要求最少的点使得每一个边(障碍物)被覆盖)根据König定理,我们知道 最小点覆盖 = 最原创 2015-07-28 15:39:53 · 831 阅读 · 0 评论 -
HDU6200 mustedge mustedge mustedge (2017 ACM/ICPC Asia Regional Shenyang Online)
传送门题目大意给出一张连通图,现在有两种操作: ⋅1 u v\cdot 1\ u\ v:向图中加入一条连接uu和vv的边 ⋅2 u v\cdot 2\ u\ v:询问uu和vv之间的必经边的条数思路首先随便找到一个生成树,每条边的初始权值为1,对于所有非树边(u,v)(u,v),将生成树上uu到vv的路径上的所有边的权值都变为0,那么询问时只需要回答uu到vv的边权和即可,这就很容易了。 然后原创 2017-09-13 19:24:02 · 472 阅读 · 0 评论