图论
Phoenix丶HN
这个作者很懒,什么都没留下…
展开
-
hdu5732(树哈希+树的重构+树的重心)
题目大意:给定一棵树,这两棵树肯定是同构的。问你,第一棵树的每个节点,可以对应第二个树的那个节点。 显然对应方法不唯一,SPJ来检测结果正确。方法:首先找树的重心, 树的重心最多2个。一个重心的情况很多,两个重心的情况如图:有人说这个图太对称了……那给个不对称的。 这个图很重要……涉及到一些奇怪的情况原创 2017-03-09 21:49:16 · 412 阅读 · 0 评论 -
兔子与樱花(map+最短路+记录路径)
总时间限制: 1000ms 内存限制: 65535kB描述很久很久之前,森林里住着一群兔子。有一天,兔子们希望去赏樱花,但当他们到了上野公园门口却忘记了带地图。现在兔子们想求助于你来帮他们找到公园里的最短路。输入输入分为三个部分。第一个部分有P+1行(P第二个部分有Q+1行(Q第三个部分有R+1行(R输出输出有R行,分别表示每个路线最短的走法。其中两个点之间,用->(矩原创 2016-07-19 14:52:07 · 865 阅读 · 0 评论 -
最短路算法优良比较
最短路径问题是图论研究中的一个经典算法问题,旨在寻找图(由结点和路径组成的)中两结点之间的最短路径。算法具体的形式包括:确定起点的最短路径问题:即已知起始结点,求最短路径的问题。确定终点的最短路径问题:与确定起点的问题相反,该问题是已知终结结点,求最短路径的问题。在无向图中该问题与确定起点的问题完全等同,在有向图中该问题等同于把所有路径方向反转的确定起点的问题。确定起点终点的最原创 2016-07-13 11:19:45 · 918 阅读 · 0 评论 -
二叉树插入,查找 删除
二叉查找树--插入、删除、查找 二叉查找树是满足以下条件的二叉树:1.左子树上的所有节点值均小于根节点值,2右子树上的所有节点值均不小于根节点值,3,左右子树也满足上述两个条件。 二叉查找树的插入过程如下:1.若当前的二叉查找树为空,则插入的元素为根节点,2.若插入的元素值小于根节点值,则将元素插入到左子树中,3.若插入的元素值不小于根节点值,则将元素插入到右子树中。转载 2016-07-11 16:36:37 · 307 阅读 · 0 评论 -
树的直径
树的直径:树中距离最远的两点间的距离。下面说几道题:hdu 2196:对于树上(双向边)的每一个节点求出与其距离最远的点的距离。这个主要用的思想是两次dfs:一次dfs将无向图转化为有跟树(所以一开是一定要是建双向边,不然很可能wa或者tle,记录过程中可以开数组记入父亲节点,也可以在dfs递推过程中以栈的形式记录)求出每个跟节点到其所有的叶子节点的最远距离f[i]和g[i]。再一次d转载 2016-07-10 21:21:51 · 366 阅读 · 0 评论 -
L2-007. 家庭房产
时间限制 400 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式: 输入第一行给出一个正整数N(编号 父 母 k 孩子1 ... 孩子k 房产套数原创 2016-07-05 10:15:25 · 623 阅读 · 0 评论 -
最短路+记录路径+变形!!
L2-001. 紧急救援时间限制 200 ms内存限制 65536 kB代码长度限制 8000 B判题程序 Standard 作者 陈越作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速原创 2016-07-05 09:54:40 · 654 阅读 · 0 评论 -
bzoj4835 树重心分解引发的计数问题!4月份月赛
Description定义任意两点之间存在唯一路径的无向图是树。对于一棵n个点的树,如果删掉某个点u之后每个连通块的大小均不超过n/2,那么称u为这棵树的重心。现在有一棵n个点的树T,利用过程P来构造一个n个点的有向图G,初始G没有边。现在对T调用过程P,P的内容如下:1:删去u,对每个连通块递归调用过程P;2:对每个连通块,如果它的标号最小的重心为v,那么在图G中连一条u到v的有向边。3:现在小...原创 2017-06-01 13:19:36 · 699 阅读 · 1 评论 -
树形DP(HDU4616)
一眼看上去就是树形DP。可是就是不知道为什么必须枚举每一条边,,,,而不能枚举每一个点!!!!#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;原创 2017-06-01 16:44:24 · 176 阅读 · 0 评论 -
最大密集字图--参考《胡伯涛的论文》!poj 3155
/*题意:求出图中一个子图,子图中边数/子图数 最大!源点到各个点连接一条有向边权值为U,各个点到汇点连接一条边权值为U+2*g-d,原来有关系的点连接两条有向边(u,v),(v,u)权值为1(U可以取m,U的目的是用来使得2*g-d的值始终为正),这样以后求最小割,那么h(g)= (U*n-mincut)/2;二分找到最优值即为mid ,但是如果要求图中的点则需要用left来从新图原创 2017-06-06 13:34:06 · 563 阅读 · 0 评论 -
倍增新姿势
qwb打算向学姐表白,可是学姐已经受够了他的骚扰,于是出了一个题想难住他:已知一幅n个点m条边的无向图,定义路径的值为这条路径上最短的边的长度,现在有 k个询问,询问从A点到B点的所有路径的值的最大值。qwb听完这个问题很绝望啊,聪明的你能帮帮他吗?Input一组数据。第一行三个整数n,m,k (1第2..m+1行:三个正整数:X, Y, and D (1 15原创 2017-06-02 21:03:41 · 223 阅读 · 0 评论 -
强连通缩点,求最小价值!hdu5934
#includeusing namespace std;typedef long long ll;const int INF=0x3f3f3f3f;const ll INFF=0x3f3f3f3f3f3f3f3f;struct node1{ ll x,y,r,c;}node[1010];ll dis(int i,int j){ return (node[i].x-原创 2017-07-20 17:13:25 · 184 阅读 · 0 评论 -
HDU5855(最大权闭合图构图技巧+裸的最大流)
题意:给了n个工厂,m个商店,每个商店只有在要求的工厂都建好后才能获得利润,而建一个工厂需要花费和时间,现在问你能获得利润至少为l的最短时间是多少,在这个时间下的最大利润是多少;题解:因为每一个商店盈利都必须有一些工厂修好。这就是一个闭合图的暗示!闭合图:一个有向图的子点集,使其中的点的出边都指回集合中的点,则称此为闭合图。最大权闭合图:给每个点赋上点权,则权和最大原创 2017-07-22 14:57:58 · 307 阅读 · 0 评论 -
最大团算法(codeforces839E)
题意理解玩,YY一下,就知道要把K平均分给最大团里面的每个点,然后乘积和就是答案。最大团就是有n个点的完全图,完全图就是n个点有n*(n-1)/2条边的图、有高效算法求的。。//最大独立集:一个图中最大的互相没有边相连的点集。//结论:原图的最大独立集等于补图的最大团const int maxn=1010;int best;int num[maxn];// int x[max原创 2017-08-16 18:09:40 · 2954 阅读 · 0 评论 -
HDU5988(最小费用流)
题意:图上有n个点,每个点上有a个人,b个面包,面包不够吃得去其他地方,但是每次走一条路,除了第一次,第二次开始都有P的概率让路坏掉。求路被破坏的最小概率。分析:第一次没影响,那就对(流量-1)给花费即可。如果面包比人多,说明其他人能来这里吃,那么就把多余的连向源点。然后如果不够就把不够的连向汇点。 难点:概率是乘法。没法算费用。但是如果同时取对数,那么就成加法了,就可以做了!原创 2017-08-14 19:17:31 · 460 阅读 · 0 评论 -
最短路,一定技巧的变路
00007:I Wanna Go Home 总时间限制: 1000ms 内存限制: 65536kB 描述The country is facing a terrible civil war----cities in the country are divided into two parts supporting different leaders.原创 2016-07-19 17:36:21 · 239 阅读 · 0 评论 -
克鲁斯卡尔+前向星+数学计算
Abandoned countryTime Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 953 Accepted Submission(s): 254Problem DescriptionAn abandoned c原创 2016-07-20 10:38:53 · 451 阅读 · 0 评论 -
匈牙利算法来找最多的没有弱化的!!!!但是初始化那块不知道为什么换了个地方就re。。。尴尬
#include#include#include#includeusing namespace std;int a[15];int G[15][15];int g[10][10];int n;int linker[15];bool used[15];bool dfs(int u){ for(int v=1;原创 2016-07-20 21:36:01 · 275 阅读 · 0 评论 -
bzoj4883 4886 图论新高度!!!!!
Description在一个n*m的棋盘上要放置若干个守卫。对于n行来说,每行必须恰好放置一个横向守卫;同理对于m列来说,每列必须恰好放置一个纵向守卫。每个位置放置守卫的代价是不一样的,且每个位置最多只能放置一个守卫,一个守卫不能同时兼顾行列的防御。请计算控制整个棋盘的最小代价。Input第一行包含两个正整数n,m(2接下来n行,每行m个正整数其中第原创 2017-05-31 13:44:13 · 332 阅读 · 0 评论 -
求出每条边两边有多少个点。
题目链接题解:只需要判断一条边两边的点数是否都为偶数,如果都为偶数,那么不加这条边,否则加上这条边。关键,dfs一遍,求出每条边两边有多少个点。#includeusing namespace std;typedef pairP;typedef long long ll;struct node{ int a,b,c,next;}edge[20010];int cnt;原创 2017-05-24 18:24:03 · 346 阅读 · 0 评论 -
哈密顿图的利用
题目链接对于题意我是真的理解错了。难受,wa无数发题意:其实是任意两个人都有鄙视关系,你鄙视我或者我鄙视你,就是n个点一个完全图,每条边带方向。求最长链分别是1~n是的个数。官方题解是说可以证明不论怎么画最长链都是n(都存在哈密顿路径),所以不是n的长度答案都是0只有n的时候有答案,需要计算。这要怎么证明呢?反正法,假设不能。下面点用数字表示。当只有一个点的原创 2017-05-17 16:55:33 · 984 阅读 · 0 评论 -
lca+斐波那契
点击打开链接Description有一棵树,树上有只tmk。他在这棵树上生活了很久,对他的构造了如指掌。所以他在树上从来都是走最短路,不会绕路。他还还特别喜欢三角形,所以当他在树上爬来爬去的时候总会在想,如果把刚才爬过的那几根树枝/树干锯下来,能不能从中选三根出来拼成一个三角形呢?Input第一行输入一个T,表示有多少组样例。对于每组数据:第一行包含原创 2017-05-15 17:23:34 · 283 阅读 · 0 评论 -
平衡树
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define REP(i, n) for (int i = 0; i < (n); ++i)原创 2017-05-08 18:48:08 · 203 阅读 · 0 评论 -
HDU1710二叉树构造
二叉树构造#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;int fro[1010],mid[1010],sum[1010];struct原创 2017-04-27 19:31:02 · 213 阅读 · 0 评论 -
树重心分解,求点对。
#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF=0x3f3f3f3f;int n,ans,k;int vis[1原创 2017-04-19 17:15:00 · 319 阅读 · 0 评论 -
lca模板 hdu 2586
在线 RMQ#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int INF=0x3f3f3f3f;int n;int vis[原创 2017-04-17 20:00:23 · 258 阅读 · 0 评论 -
ZOJ1516&&HDU1507(二分图匹配)
题目:点击打开链接题目就是给了一个图,里面有的地方被标记,不能用了,问最多可以取多少1*2的矩形!思路:最近在看网络流,二分图,一眼就看出是个最大匹配!建边找最大匹配就好!建边一定注意,让点与点不要重合!也就是点的ID值唯一!#include#include#include#include#include#include#include#include#include原创 2017-04-03 19:14:48 · 389 阅读 · 0 评论 -
最短路总结
写个博客记录一下最短路的几种算法,尽量做最正确的解答,减少大家的疑惑,网上有好多讲的都抄来抄去,还有好多讲的都是错误的。。。熟悉的最短路算法就几种:bellman-ford,dijkstra,spfa,floyd,下面针对这几个算法具体解析一下。首先说明一点,就是关于负环的问题。bellman-ford可以用于边权为负的图中,图里有负环也可以,如果有负环,算法会检测出负环。dijkst原创 2017-03-16 13:47:38 · 906 阅读 · 0 评论 -
hdu 5739(点双联通分量 )
FantasiaTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 375 Accepted Submission(s): 30Problem DescriptionProfessor Zhang has an原创 2017-03-14 13:25:13 · 398 阅读 · 0 评论 -
hdu5727(全排列优化+二分图匹配)
NecklaceTime Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 2848 Accepted Submission(s): 879Problem DescriptionSJX has 2*N magic gems原创 2017-03-07 11:53:09 · 396 阅读 · 0 评论 -
n个节点的二叉树的种树成卡特兰数的分布
#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;int a[105][1000];void katelan(){ memset(a原创 2017-02-13 10:11:58 · 743 阅读 · 0 评论 -
hdu1011(树形dp)
Starship TroopersTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17060 Accepted Submission(s): 4517Problem DescriptionYou, the l原创 2016-07-26 18:59:34 · 482 阅读 · 0 评论 -
poj2749 2-SAT
别的不说,只说建图。看代码#include#include#include#include#include#include#include#include#include#include#include#include#define nl n<<1#define nr (n<<1)|1#define fi first#define se secondusing na原创 2017-09-04 19:52:01 · 396 阅读 · 0 评论