随笔分类 - 图论
摘要:Shortest Cycle 题意 有n(n <= 100000)个数字,两个数字间取&运算结果大于0的话连一条边。问图中的最小环。 思路 可以发现当非0数的个数很大,比如大于200时,一定存在长度为3的环。 如果小于200, 我们就用到了Floyd求最小环的技巧。 #include <algori
阅读全文
摘要:P1073 最优贸易:https://www.luogu.org/problemnew/show/P1073 题意: 有n个城市,每个城市对A商品有不同的定价,问从1号城市走到n号城市可以最多赚多少差价。(旅游为主,赚钱为辅,所以买入和卖出只进行一次。 思路: 建一个有三层的图,三层都是相同的普通的
阅读全文
摘要:1027D. Mouse Hunt:http://codeforces.com/contest/1027/problem/D 题意: 有n个房间,每个房间放置捕鼠器的费用是不同的,已知老鼠在一个房间x,那么他一定会在下一秒到一个特定的房间a【x】。老鼠一开始可能在任意一个房间,问最少需要多少的费用,
阅读全文
摘要:POJ-1325 题意: 有两台机器A,B,分别有n,m种模式,初始都在0模式,现在有k项任务,每项任务要求A或者B调到对应的模式才能完成。问最少要给机器A,B调多少次模式可以完成任务。 思路: 相当于是在以n、m个点构成的二分图中,求二分图的最小顶点覆盖数(就是每个任务都涉及到,所需的顶点数)。根
阅读全文
摘要:传送门:http://poj.org/problem?id=2513 题意:给你许多木棍,木棍两端都有颜色,问能不能首尾相接,要求颜色相同。 参考:https://www.cnblogs.com/kuangbin/archive/2012/08/07/2626223.html 思路: 由图论知识可以
阅读全文
摘要:今天看到讲2-SAT比较好的blog,感觉微微的理解了2-SAT 传送门 参考: https://blog.csdn.net/leolin_/article/details/6680144 题意: 你有2*n把钥匙,但是在每一对钥匙中,用了a,就不能用b。你要用这么多钥匙去开尽可能多的门。开门的规则
阅读全文
摘要:传送门: 题意: 给出m条关系,表示n个牛中的崇拜关系,这些关系满足传递性。问被所有牛崇拜的牛有几头; 思路: 先利用tarjan缩点,同一个点中的牛肯定就是等价的了,建立新的图,找出其中出度为0的点。如果这个点唯一,那么答案就是这个缩点中包含的所有点。 如果不唯一,那么答案不存在。因为有两个点出度
阅读全文
摘要:传送门:https://www.luogu.org/problemnew/show/P2863 思路:tarjan模板题,之前会的tarjan,一直想学缩点到底是什么操作,发现就是把同组的放在一个数组里(并查集可能又会有),或者重新建图;不知道为什么百度不到讲缩点的blog。
阅读全文
摘要:传送门:http://poj.org/problem?id=1797 题意: 在起点和终点间找到一条路,使得经过的边的最小值是最大的; 和POJ2253类似,传送门:http://www.cnblogs.com/ckxkexing/p/8747108.html 思路: 跑一边dijkstra,每次松
阅读全文
摘要:传送门:http://poj.org/problem?id=2253 参考:https://www.cnblogs.com/lienus/p/4273159.html 题意:给出一个无向图,求一条从 1 到 2 的路径,使得路径上的最大边权最小; 思路: dij将距离更新改成取最大值即可,即dis[
阅读全文
摘要:参考:https://blog.csdn.net/corncsd/article/details/38235973 传送门:http://codeforces.com/problemset/problem/450/D 题意: 有N个地方,M条线路,K条火车路(从1出发)。最多删掉多少火车路使1到每个
阅读全文
摘要:传送门: CodeForces - 697C 原创--原创--原创 第一次自己A了一道感觉有点难度的题; 题意:在一个类似于二叉树的图上,1 : u ,v,w 表示从u到v的所以路都加上w的费用; 2 : u,v 输出u,v间的花费; 思路:自己看这个图,一直想写线段树,后来想想LCA求最近公共祖先
阅读全文
摘要:洛谷割点模板:https://www.luogu.org/problemnew/show/P3388 #include <iostream> #include <cstring> #include <string> #include <algorithm> #include <cstdio> #in
阅读全文
摘要:Sleepy Game 题意: 在一个无向图中,找到一种策略,使得后手没有路子可走; 思路(copy自刘哥blog): dfs。 vis[u][0]==1表示u这个点能从s点偶数路径到达 vis[u][1]==1表示u这个点能从s点奇数路径到达 这个样就能保证dfs时每个点最多被访问2次 那么如果存
阅读全文
摘要:Buy a Ticket 题意:有n个点和m条路(都收费),n个点在开演唱会,门票不同,对于生活在n个点的小伙伴,要求计算出每个小伙伴为了看一场演唱会要花费的最小价格; 思路: 这道题我一开始觉得要对每一个点都跑一次最短路, 然而只用把dis【】的每个点初始化成每个地方的门票价格,在放入优先队列中,
阅读全文
摘要:Save your cats 题意:存在n个点,有m条边( input中读入的是 边的端点,要先转化为边的长度 ),做一个最小生成树,使得要去除的边的长度总和最小; 思路:利用并查集和求最小生成树的方法,注意这里的排序要从大到小排,这样最后建树的消耗最大,反过来去除的最小; 当然题意不是这么直白,感
阅读全文
摘要:Road Construction 题意:在一个无向图中,每条边上有建设的花费和路径的长度,要求求得,在保持每个点到1号点最小距离不变的情况下,求最小的总花费; 思路:用dijkstra 找出每个点的最小距离,再重新从1出发,找出每个点对应的最小花费;(一开始自己想的是直接在dijkstra的时候把
阅读全文
摘要:Electrification Plan 题意:在一个无向图中,给你几个源点,找出把所有点连接到源点后最小的消费; 可以利用并查集: 先用结构体把每个边存起来,再按照消费大小排序。之后从消费小的到大的一个个尝试,两个点需要连接的话,连接上同时把消费也算上去; 我自己就做了一个预处理,(直接把读入的用
阅读全文
摘要:这道题一开始觉得是并查集,稳了;wa 才想起来有两个重要条件 1、完全独立的点不算; 2、把点连起来的边(路)不能重复走:就是要判断欧拉回路,即每个点的度数是不是偶数; 遍历每个点,把度数为奇数的点的父节点对应的计数器加1; 最后把非独立父节点的计数器加起来:1、计数器为零的加1就可以2、非零的要除
阅读全文
摘要:Watchcow 这道题的题意好理解,就是要从1出发,每条边都走两遍,最后再回到1; 但是,我一开始没有想到和欧拉回路有什么关系; 学了求欧拉的dfs()后,试了一下发现和样例差不多; 感觉求回路,什么走两边可能都要用这样的dfs; 这道题还有一个注意点,就是不能直接开bool vis [10007
阅读全文

浙公网安备 33010602011771号