随笔分类 -  暑假集训:图论

摘要:题意 题解 阅读全文
posted @ 2019-08-14 22:06 DWVictor 阅读(320) 评论(0) 推荐(0)
摘要:有N个变量X1X1~XNXN,每个变量的可能取值为0或1。 给定M个算式,每个算式形如 XaopXb=cXaopXb=c,其中 a,b 是变量编号,c 是数字0或1,op 是 and,or,xor 三个位运算之一。 求是否存在对每个变量的合法赋值,使所有算式都成立。 输入格式 第一行包含两个整数N和 阅读全文
posted @ 2019-08-14 22:03 DWVictor 阅读(302) 评论(1) 推荐(0)
摘要:题意 有一个 n*n 的图,. 代表空白区域,X 代表墙,现在要在空白区域放置结点,要求同一行同一列只能放一个,除非有墙阻隔,问最多能放多少个点 思路 只有在墙的阻隔情况下,才会出现一行/列出现多个点的情况,那么可以考虑进行缩点,将同一行且没有墙体阻隔的区域缩成一个点,放到左点集中,将同一列且没有墙 阅读全文
posted @ 2019-08-13 20:34 DWVictor 阅读(1300) 评论(0) 推荐(2)
摘要:题目 给到一个矩阵,有些格子上是草,有些是水。需要用宽度为1,长度任意的若干块木板覆盖所有的水,并不能覆盖草,木板可以交叉,但只能横竖放置,问最少要多少块板。 分析 经典的矩阵二分图构图和最小点覆盖。无非就是两种方向,横向和竖向。我们把水块连续的编成同一号,那么对于一个点,它会有一个横向编号和纵向编 阅读全文
posted @ 2019-08-13 20:28 DWVictor 阅读(299) 评论(0) 推荐(1)
摘要:POJ 3207 C++代码一 C++代码二 点击 阅读全文
posted @ 2019-08-13 17:32 DWVictor 阅读(260) 评论(0) 推荐(0)
摘要:解题报告 题意理解 给定一张N个点,M个边的无向图,求出无向图的一颗最小生成树,但是我们要求一号节点的入度不可以超过给定的整数S 也就是一个最小生成树,要求它的一号节点,最多只能和S个节点相连. 思路确定 题意就已经告诉我们,我们的必备算法必然是最小生成树.但是具体的算法流程,我们还得思考一下. 首 阅读全文
posted @ 2019-08-13 15:14 DWVictor 阅读(273) 评论(0) 推荐(0)
摘要:题意 首先判断所有的人可不可以分成两部分,每部分内的所有人都相互不认识。如果可以分成 则求两部分最多相互认识的对数。 解题 类似分成两组,同组互不相关,就可能使判断是否为二分图 能否分成两部分 则是判断是否是一个二分图。无向图G为二分图的充分必要条件是:G至少有两个顶点,且当存在回路时,其所有回路的 阅读全文
posted @ 2019-08-13 00:27 DWVictor 阅读(157) 评论(0) 推荐(0)
摘要:题意: 给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse同一条直线上只能有一个blockhouse,除非有wall 隔开,问在给出的图中最多能放置多少个blockhous 分析: 把原始图分别按行和列缩点 建图:横竖分区。先看每一列,同一列相连的空地同时看成一个点,显 阅读全文
posted @ 2019-08-12 23:25 DWVictor 阅读(185) 评论(0) 推荐(0)
摘要:优先队列 + 反向拓扑 阅读全文
posted @ 2019-08-12 21:41 DWVictor 阅读(203) 评论(0) 推荐(0)
摘要:POJ 3249 Test for Job (拓扑排序+DP) <题目链接> 题目大意: 给定一个有向图(图不一定连通),每个点都有点权(可能为负),让你求出从源点走向汇点的路径上的最大点权和。 解题分析:想到拓扑排序就好做了,然后在拓扑的过程中进行简单的状态转移。 <题目链接> 题目大意: 给定一 阅读全文
posted @ 2019-08-12 21:40 DWVictor 阅读(241) 评论(0) 推荐(0)
摘要:<题目链接> 题目大意: 有一群孩子正在玩老鹰抓小鸡,由于想当老鹰的人不少,孩子们通过投票的方式产生,但是投票有这么一条规则:投票具有传递性,A支持B,B支持C,那么C获得2票(A.B共两票),输出最多能获得的票数是多少张和获得最多票数的人是谁?(如果有多个人获得的票数都是最多的,就将他们全部输出) 阅读全文
posted @ 2019-08-11 01:40 DWVictor 阅读(259) 评论(0) 推荐(0)
摘要:一个公园中有 n 个景点,景点之间通过无向的道路来连接(明显的点双 ),如果至少两个环公用一条路,路上的游客就会发生冲突;如果一条路不属于任何的环,这条路就没必要修 问,有多少路不必修,有多少路会发生冲突 每一个连通块中,如果边数大于点数,这个块中所有的边全部是冲突边。 所有桥为不需要修建的路。 点 阅读全文
posted @ 2019-08-11 00:11 DWVictor 阅读(493) 评论(0) 推荐(0)
摘要:题目大意: 每一头牛的愿望就是变成一头最受欢迎的牛。现在有N头牛,给你M对整数(A,B),表示牛A认为牛B受欢迎。 这 种关系是具有传递性的,如果A认为B受欢迎,B认为C受欢迎,那么牛A也认为牛C受欢迎。你的任务是求出有多少头 牛被所有的牛认为是受欢迎的。 先用tarjan求出每个强连通分量,再缩点 阅读全文
posted @ 2019-08-10 20:18 DWVictor 阅读(299) 评论(0) 推荐(0)
摘要:题目: 曹操在长江上建立了一些点,点之间有一些边连着。如果这些点构成的无向图变成了连通图,那么曹操就无敌了。刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥。但是诸葛亮把所有炸弹都带走了,只留下一枚给刘备。所以刘备只能炸一条桥。 题目给出n,m。表示有n个点,m条桥。 接下来的m行每行给出a, 阅读全文
posted @ 2019-08-10 16:39 DWVictor 阅读(275) 评论(0) 推荐(0)
摘要:题意 求出最短路和次短路的条数,当次短路比最短路长度小1时,输出条数之和,反之输出最短路条数。 题解 dis1[],cnt1[],dis2[],cnt2[] 分别表示最短路的长度和条数,次短路的长度和条数。 当当前距离小于当前点最短路长度的时候,更新二者长度和条数。 当当前距离等于当前点最短路长度的 阅读全文
posted @ 2019-07-30 21:45 DWVictor 阅读(176) 评论(0) 推荐(0)
摘要:题意 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价。起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权N<=100000M<=200000 题解一 题解二 比较有技巧的建图 首先考虑暴力点的建图: 把每条无向边拆成两条 阅读全文
posted @ 2019-07-30 17:35 DWVictor 阅读(398) 评论(0) 推荐(1)
摘要:题意 给出一张图,q个询问,每次询问给出uv,找出一条路径,使这条路径上的最大边权是两点所有路径中最小,输出这个值 思路 很显然要先求出最小生成树,任意两点在最小生成树上有唯一路径,并且这条路径上的最大边权就是所输出的值,接下来就是如何求出树上任意两点唯一路径中的最大边权了,先把最小生成树转化为有根 阅读全文
posted @ 2019-07-30 17:32 DWVictor 阅读(261) 评论(0) 推荐(0)
摘要:题面链接 题解 令x-y<=z表示x最大比y大z。 若b-a<=k1, c-b<=k2, c-a<=k3,那么c-a最大为多少呢?显然应该等于min(k1+k2, k3)。可以用下图来表示示(不擅图丑勿怪) C++堆优化代码 C++配对堆优化 阅读全文
posted @ 2019-07-30 17:30 DWVictor 阅读(363) 评论(0) 推荐(0)
摘要:题面链接 题解 1 //最短路径——Dijkstra算法 2 //此题的关键在于等级限制的处理,最好的办法是采用枚举,即假设酋长等级为5,等级限制为2,那么需要枚举等级从3~5,4~6,5~7 3 //从满足改等级范围的结点组成的子图中用Dijkstra来算出最短路径 4 //小结,通过枚举的方式可 阅读全文
posted @ 2019-07-30 17:21 DWVictor 阅读(310) 评论(0) 推荐(0)
摘要:Desert King Time Limit: 3000MS Memory Limit: 65536K Total Submissions:33847 Accepted: 9208 Description David the Great has just become the king of a d 阅读全文
posted @ 2019-07-23 14:25 DWVictor 阅读(295) 评论(0) 推荐(0)