随笔分类 - 图论
摘要:提交题意: 给了M个机器,N个糖果要被生产,每个糖果有一个Si和Ti的时间,只能在Si或者在SiM—>C1->C3, S->C2->C3->T 因为时间是一个天然的有序 他们之间的转化形成了一个 DAG 图,所以后面那个直接构造一个类似二分图#include #include #include #i...
阅读全文
摘要:将A[i]同他后面比他小的建边,然后求最大密度子图#include #include #include #include #include #include #include using namespace std;const int maxn=105;const double eps=0.0000...
阅读全文
摘要:求最大密度子图记得在最后一次寻找的时候记得将进入的边放大那么一点点,这样有利于当每条边都满流的情况下会选择点#include #include #include #include #include #include #include using namespace std;const int max...
阅读全文
摘要:建图差不多和以前做的差不多,就是最后询问这个闭合子图有多少个的时候,只要输出这个图的S集合,就是进行dfs能遍历到的点一定在S集合中,不能遍历到的点在T集合中#include #include #include #include #include #include using namespace s...
阅读全文
摘要:题意: 有n个基站可以建立,然后m个团体会使用这些基站进行工作,地i个团体会适应Ai Bi 这两个基站, 如果建成收益Ci, 第j个基站花费Pj,求如何建立使得收益最大,将每个团体看以一个点,然后从这个点出发向那两个点建一条边,他自己想s建立一个为Ci的边,第j个基站想t建立一个容量为Pj的边,跑一...
阅读全文
摘要:题意:给你n个墓室,m条路径,一个人在1号墓室(起点),另一个人在n号墓室(终点),起点的那个人只有通过最短路径才能追上终点的那个人,而终点的那个人能切断任意路径。第一问——终点那人要使起点那人不能追上的情况下可以切的最少的路径数,输出最少的路径数第二问——起点那人能追上终点那人的情况下,终点那人能...
阅读全文
摘要:给了一个矩阵 n行m列 选n个数 要保证这n个数不在同行同列,计算出第k大的数最小 , 二分答案,然后我们对于每个a[i][j]#include #include #include #include using namespace std;const int maxn=100+5;struct BP...
阅读全文
摘要:这题说的是 在一个 森林中 两个人在这棵树上涂颜色,黑色或者白色,第一次只能在1 号节点上涂色 第二次 只能在2上涂,以此类推, 在每个节点上只能涂黑色或者白色,并且相邻的点不能有相同的颜色,最后求不能填的人就输了。每个点周围的比他小的点 都会有一个祖先(或者是他们自己),我们知道他周围的点的祖先中...
阅读全文
摘要:大白例题P356 你在一座城市里负责一个大型活动的接待工作。你需要去送m个人从出发地到目的地,已知每个人的出发时间出发地点,和目的地点,你的任务是用尽量少的出租车送他们,使得每次出租车接客人,至少能提前一分钟达到他所在的位置,城市为网格 (x1,y1) ===>(x2,y2) 需要|x1-x2|+|...
阅读全文
摘要:这题大白书例题 :Frank 是一个思想有些保守的高中老师,有一次,他需要带一些学生出去旅行,但又怕其中一些学生在旅途中萌生爱意。为了降低这种事情的发生概率,他决定确保带出去的任意两个学生至少要满足下面4条中的一条 1 身高相差大于40 2 性别相同 3 最喜欢的音乐属于不同的类型 4 ...
阅读全文
摘要:大白书355 1 // UVa11419 SAM I AM 2 // Rujia Liu 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 const int maxn = 1000 + 5; //...
阅读全文
摘要:这题说的给了n个点m条边要求保证是一个有向无环图,可以删除至多k条边使得这个图的拓扑序的字典序最大,我们知道如果我们要排一个点的时候一定要考虑比他大的点是否可以、通过拆边马上拆出来,如果可以拆当然是拆,肯定保证字典序最大,如果不能拆,就不拆留着以后拆,当初这个比他大的点度数小于k的,最大是多少,这个...
阅读全文
摘要:给定一个n*n矩阵,每个格子里都有一个正整数w(i,j)。你的任务是给每行确定一个整数row(i),没列也确定一个正整数col(i),使得对于任意格子(i,j),w(i,j) =W[i][j], 且KM使得 Lx[i]+Ly[i]==W[i][j],那么可以转化为KM来计算。每个row[i] 为Lx...
阅读全文
摘要:这题给了n个白点和n个黑点坐标,计算出他们两两配对的总路程最少,我们算出他们之间的距离,为d,然后 w[j][i]=-d; 就将求最小值转化为求最大值,然后采用km进行匹配计算 1 #include 2 #include 3 #include 4 #include 5 #include 6...
阅读全文
摘要:大白书P248有证明,此处贴出两种复杂度的方案,n^4大白书P350n^3 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 /* KM算法 7 * 复杂度O(nx*nx*ny) 8 * 求最大权匹配 9...
阅读全文
摘要:这题说的需要最多花费cost元来搭建一个比赛网络,网络中有n台机器,编号为0 - n-1其中机器0 为服务器,给了n条线有向的和他们的花费以及带宽 计算,使得n台连接在一起,最大化网络中的最小带宽, 我们二分答案,然后使用朱刘算法 计算最小花费必须 2 #include 3 #include ...
阅读全文
摘要:源自大白书题意 有n座城市通过m条双向道路相连,每条道路都有一个危险系数。你的任务是回答若干个询问,每个询问包含一个起点s和一个终点t,要求找到一条从s到t的路,使得途径所有的边的大最大危险系数最小。解: 首先求出最小生成树,并把它改写成有根树,让fa[i]和cost[i]分别表示节点i的父亲编号和...
阅读全文
摘要:这题说的是给了n个点 和m条边, 这m条边是无向的,任务是将这些边变成有向的,并且添加最少的有向边使得这个图中每个点的入度为偶数, 出度为偶数。我们可以考虑使用欧拉回路来解决这个问题,这样说,假如一个图如果满足欧拉回路,那么 a b c d a , a - > b d 2 #include 3 ...
阅读全文
摘要:这题说的是n个城市 建路 使他们联通然后 , 可以使用一条超级的路这条路不计入总长,此时路长度为B, 这条路链接的两个城市人口与和为A+B, 然后计算出最大的A/B解题 先生成一颗最小生成树,然后 计算出这颗树上每两个节点之间要经过的最长的那条路,然后枚举每两个节点u 个v 求出答案 1 #incl...
阅读全文
摘要:大白书 P341这题说的是给了NT种飞机票,给了价钱和整个途径,给了nI条要旅游的路线。使用飞机票都必须从头第一站开始坐,可以再这个路径上的任何一点下飞机一但下飞机了就不能再上飞机,只能重新买票,对于每张票使用的状态有经过了这个路途的前i个点使用它,那么点就有,n*len(n为城市编号,为旅途所经过...
阅读全文

浙公网安备 33010602011771号