随笔分类 - ACM——图论
摘要:"题目链接" 题意 给出n个点,每个点有一个值,现在要选择一些点的集合,使得(选择的点生成的逆序对数目)/(选择的点的数量)的比率最大。 思路 点与点之间生成一个逆序对可以看做是得到一个边,那么就是分数规划问题|E|/|V|,即求最大密度子图。 先处理出所有的逆序对,然后把这些逆序对看作边。 二分枚
阅读全文
摘要:"题目链接" 题意 给出n个人,和m对有冲突的人。要裁掉一些人,使得冲突率最高,冲突率为存在的冲突数/人数。 思路 题意可以转化为,求出一些边,使得|E|/|V|最大,这种分数规划叫做最大密度子图。 "学习" "建图" 对于每个边,依赖于点,可以转化为最大权闭合子图来求解。 最大密度子图: max(
阅读全文
摘要:"题目链接" 题意 给出一棵树,问长度为偶数的路径数有多少。 思路 记录路径长度为奇数的数目和为偶数的数目,然后 n (n 1) / 2 求和即可。 C++ include using namespace std; const int N = 1e5 + 11; const int INF = 0x
阅读全文
摘要:"题目链接" 题意 求有向图的最小生成树,且根不定。 思路 最小树形图即求有向图的最小生成树,用的是朱刘算法。 这里不定根,那么可以建立一个虚根,让虚根和所有点相连,权值为一个很大的数(这里直接设为所有边之和+1)。 如果最后的答案比两倍的sum还大,就说明至少有两个点是通过虚边(从虚点走出去的边)
阅读全文
摘要:"题目链接" 题意 中文题意 思路 因为存在环和重边,边来回走是没有意义的,因此最终的答案应该是一条从1到n的路径权值异或上若干个环的权值,那么难点在于如何选取这些环的权值使得最终的答案更优。 使用到线性基的贪心算法来计算。DFS处理出环的异或值,然后将这些值加入到线性基中,贪心选取。 "参考"
阅读全文
摘要:"题目链接" 题意 给出一个n\ m的酒店,每个点是一个房间,要将这个酒店的房间划分成为两块(一块无烟区,一块吸烟区),相邻的两个房间之间有一条带权边,权值代表空气锁的面积,如果把这条边给去掉,那么需要花费(空气锁的面积+开一个窗口传食物)\ 1000元。问需要的最少花费是多少。要注意 如果面积为0
阅读全文
摘要:"部分转载自http://www.renfei.org/blog/bipartite matching.html" 最大匹配数:最大匹配的匹配边的数目 最小点覆盖数:选取最少的点,使任意一条边至少有一个端点被选择 最大独立数:选取最多的点,使任意所选两点均不相连 最小路径覆盖数:对于一个 DAG(有
阅读全文
摘要:"题目链接" 题意 已知班级有g个女孩和b个男孩,所有女生之间都相互认识,所有男生之间也相互认识,给出m对关系表示哪个女孩与哪个男孩认识。现在要选择一些学生来组成一个集合,使得里面所有人都认识,求此集合最大人数。 思路 二分图的最大团的定义:对于一般图来说,团是一个顶点集合,且由该顶点集合诱导的子图
阅读全文
摘要:"题目链接" 题意 给一棵树,每个点上有一个权值,问是否存在一条路径(不能是单个点)上的所有点相乘并对1e6+3取模等于k,输出路径的两个端点。如果存在多组答案,输出字典序小的点对。 思路 首先,(a b) % MOD = k,知道a和k,求b,可以使用 "逆元" 来求,于是可以想到用一个类似于ma
阅读全文
摘要:"题目链接" 题意 中文题意。 思路 和上一题类似,只不过cal()函数需要发生变化。 题目中要求是3的倍数,那么可以想到 和 是一样的,因此,我们只要在每次计算路径长度的时候,把 放在一个桶里面,然后就可以转化为,一个简单的计数问题了。 对于答案的贡献:就像题目中一共有n^2个点对一样,一开始包括
阅读全文
摘要:"题目链接" 题意 给一棵边带权树,问两点之间的距离小于等于K的点对有多少个。 思路 "《分治算法在树的路径问题中的应用》" "图片转载于http://www.cnblogs.com/Paul Guderian/p/6782671.html" 我对于点分治的理解:对于树上的一些问题,可以转化为答案只
阅读全文
摘要:"题目链接" 题意 给出n个点m条边的无向图,求次短路。 思路 和 "POJ 2449" 类似,只不过大小要开成long long。 C++ include using namespace std; typedef long long LL; const int N = 100011; const
阅读全文
摘要:"题目链接" 题意 给出n个点m条有向边,源点s,汇点t,k。问s到t的第k短路的路径长度是多少,不存在输出 1. 思路 A\ 算法是启发式搜索,通过一个估价函数 f(p) = g(p) + h(p) ,其中源点到p的距离是g(p),从p到汇点的距离是h(p),从源点经过p点到达汇点的长度f(p),
阅读全文
摘要:"题目链接" 题意 给出n个点,要把除1以外的点分成k个集合,然后对于每个集合要和1这个点一起求一个最小生成树,然后问这k个最小生成树的最大总和是多少。 思路 因为每个集合都包含1这个点,因此对于每个点都至少有一条到1的路径。可以从1开始DFS,对于每个点u,它和父亲的边的贡献最多可以是min(sz
阅读全文
摘要:"题目链接" 题意 给出一棵有n个结点的树,每个结点有一个颜色,问在这棵树的所有路径中,每条路径的颜色数求和是多少。 思路 求每种颜色的贡献可以转化为总的和减去每种颜色在哪些路径上没有出现的贡献,一个颜色在树块中的贡献为sz (sz 1)/2。 这个题就是把一棵树分成许多个树块然后统计。 1号结点为
阅读全文
摘要:"题目链接" 题意 有n次事件,q个队列,s个传感器。每个传感器接到一个队列,每个队列有一个容量。 接下来执行n次事件,每次事件都会有一个最大发送数据量d。和s个数据a,代表这次给每个s填入a的数据量。 每次事件执行完后都要将队列里面的数据发送总和为d的数据量。这一次事件的数据发送后队列剩余的数据可
阅读全文
摘要:"题目链接" 题意 有n个点,其中有m个点是铁矿,k个点是煤,从1号点出发,你可以派一些士兵跑向不同的点,问占领至少一个铁矿和一个煤的时候,最少需要占领多少个点。 思路 建两幅图,其中一幅是正向边,一幅是反向边。做三次BFS。 第一遍BFS:从1号点BFS一遍整个正向边的图,记录数组dis[0][i
阅读全文
摘要:"题目链接" 题意 给出一棵有边权的树,然后给出q个查询,每次查询问两个结点的路径上的边的长度的中位数是多少。 思路 这道题目是用主席树(用权值当结点)和LCA来做的。 和之前做过的区间第K大类似,这道题目是把数组转化为树。儿子结点的线段树信息是继承了父亲结点的线段树信息(数组中是第i个结点继承了第
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3062 题意:中文。 思路:裸的2-SAT。判断二元组的两个人是否在同一个强连通分量。 学习地址:http://www.cnblogs.com/ambition/archive/2011/07/30/2-sat.h
阅读全文
摘要:http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1267 题意:给出一棵树,每条树边有权值,现在要修建n-1条边,边的权值为边的两点间原来的树边权值之和,问最大能是多少。 思路:背锅题。比赛的时候想过树的直径,可是想歪了。后面
阅读全文