正睿OI国庆DAY2:图论专题 dfs/例题 判断无向图之间是否存在至少三条点不相交的简单路径 一个想法是最大流(后来说可以做,但是是多项式时间做法 旁边GavinZheng神仙在谈最小生成树 陈主力说做法是dfs 首先两个点一定在点双联通分量里 点双是简单环,只有两条,不存在 猜测其他情况存在三条 双联通分量分解 输出情况可以用dfs树判,讨论非树边覆盖情况 内包含 下面分叉连到上面 相交 输出点即可 BFS/例题 BFS树没有跳跃边 计数/动态规划有用吧 树上bfs序好像可以判断距离? 边权…
Problem 1. bricksInput file: bricks.inOutput file: bricks.outTime limit: 1 secondjyb 在BUAA 天天被大神虐,所以只能去搬砖了.终于在2019 年的夏天,菜菜的jyb 找不到工作,真的去工地搬砖了.jyb 的工头cky 是一个很麻烦的人,他会让jyb 按某种方式搬砖,还问会问一些奇怪的问题.现在有n 块砖,m 次操作.操作有两种:1. M x y 把编号为x 的砖所在的一摞砖搬到编号为y 的砖所在的一摞砖的上面…
A.方老师和缘分 http://www.cnblogs.com/whatbeg/p/3765621.html B.方老师和农场 http://www.cnblogs.com/whatbeg/p/3765624.html C.方老师炸弹 http://www.cnblogs.com/whatbeg/p/3765625.html D.方老师抢银行 http://www.cnblogs.com/whatbeg/p/3765628.html E.树上的距离 http://www.cnblogs.com/…
题目链接 /* *题目大意: *求出从i到j,刚好经过k条边的最短路; * *矩阵乘法的应用之一(国家队论文): *矩阵乘法不满足交换律,矩阵乘法满足结合律; *给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值; *把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j; *令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点); *类似地,C*A的第i行第j列就表示从i到j经…
解题报告 题意: n个插头m个设备k种转换器.求有多少设备无法插入. 思路: 定义源点和汇点,源点和设备相连,容量为1. 汇点和插头相连,容量也为1. 插头和设备相连,容量也为1. 可转换插头相连,容量也为inf(由于插头有无限个) #include <map> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <iostream…
解题报告 题意: 有一个旅游团如今去出游玩,如今有n个城市,m条路.因为每一条路上面规定了最多可以通过的人数,如今想问这个旅游团人数已知的情况下最少须要运送几趟 思路: 求出发点到终点全部路其中最小值最大的那一条路. 求发可能有多种.最短路的松弛方式改掉是一种.最小生成树的解法也是一种(ps.prime和dijs就是这样子类似的) #include <iostream> #include <cstdio> #include <cstring> #include <…
解题报告 option=com_onlinejudge&Itemid=8&category=7&page=show_problem&problem=508">题目传送门 题意: 有20个城市,仅仅能征服相邻的城市,问要征服目的城市,最少须要征服多少城市(包含目的城市) 思路: 多源最短路,直接floyd,点才20个. #include <iostream> #include <cstring> #include <cstdio&…
1.bzoj1489-> 这是个新套路. 我们希望找到最小的x,那么可以二分x,然后判断是否存在圈的边权的平均值小于等于x. 设圈的边权依次为w1,w2,w3,…,wk,平均值为p, 则有p= (w1+w2+w3+…+wk)/k , 可以推出p*k=w1+w2+w3+…+wk, 这样就会有(w1-p)+(w2-p)+…+(wk-p)=0, 当p≤x时,就会有(w1-x)+(w2-x)+…+(wk-x)≤0. 这样,可以通过把所有边的边权都改为w-x,然后通过判断负环得出存在圈的边权的平均值小于等…
解题报告 题意: 求全部路中最大分贝最小的路. 思路: 类似floyd算法的思想.u->v能够有另外一点k.通过u->k->v来走,拿u->k和k->v的最大值和u->v比較.存下最小的值. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #define inf 0x3f3f3f3f using namespace std;…
解题报告 思路: 要求抢劫银行的伙伴(想了N多名词来形容,强盗,贼匪,小偷,sad.都认为不合适)不在同一个路口相碰面,能够把点拆成两个点,一个入点.一个出点. 再设计源点s连向银行位置.再矩阵外围套上一圈.连向汇点t 矩阵内的点,出点和周围的点的出点相连. #include <iostream> #include <cstring> #include <cstdio> #include <queue> #define M 500000 #define N…