随笔分类 - 图论
摘要:记录一下LCA的板子,hin久没打了就是说(LCA的板子左转去某谷找) 判断一个点集是不是都在同一条链上,考虑在同一条链上的会有什么特性: for(int i=1;i<=k;i++) { if(p[i]==p1||p[i]==p2||p[i]==plca) continue; if(p1!=plca
阅读全文
摘要:前置知识:最大流 大意是一个人喜欢一些菜,还喜欢一些房间,但房间和菜只能对应一个人,求最大的匹配数 菜和房间都是围绕人开始的,所以建图时把人放中间 room-->people-->veg or veg-->people-->room 为什么不能是people-->room-->veg? 你会发现这样
阅读全文
摘要:在做这道题之前,可以先去看一下: P1453 城市环路: https://www.cnblogs.com/liyishui2003/p/16150985.html 如果说城市环路是没有上司的舞会的基环树版本 那P2607就是城市环路的基环树森林版本 刚开始开开心心把城市环路的代码改了改输出输入就交了
阅读全文
摘要:这道题的解题关键在于:n个点,n条边 说起n个点,n-1条边,联通,必然是树形结构 那再多一条边呢? 这种图有自己的名字:基环树,也就是只有一个环的树 比如: 在做这题前可以先去看看:洛谷P1352没有上司的舞会 要求一条边的两个端点不能同时取,处理方法是设dp[i][0/1]表示这点取或者不取 转
阅读全文
摘要:缩点是求联通问题的基本操作qaq 注意特判原来就联通的情况 #include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #include <queue> #include <st
阅读全文
摘要:拓扑排序的开棺题: 这题的坑点是: 多组数据,记得输出换行符(题目没讲) 要求输出的时候冠军的编号在前,建边的时候逆向一下,从赢的指向输的可以保证赢家在前; 开一个优先队列可以保证序号小的在前; -- #include <iostream> #include <math.h> #include <s
阅读全文
摘要:这三货是一套的,改改输入输出 注意在判断次小生成树时,要保证最后用到的边的总数为n-1,否则非法. 前两道wa了好久,一直放着,直到今天打开uva10462才意识到题目保证最小生成树存在但没保证次小生成树一定存在.. Poj 1679 #include <iostream> #include <ma
阅读全文
摘要:Farmer John 的农场缺水了。 他决定将水引入到他的 nn 个牧场。他准备通过挖若干井,并在各块田中修筑水道来连通各块田地以供水。在第 ii 号田中挖一口井需要花费 W_iWi 元。连接 ii 号田与 jj 号田需要 P_{i,j}Pi,j(P_{j,i}=P_{i,j}Pj,i=Pi
阅读全文
摘要:大意是给定n,m,v,n个点,在这n个点之间连m条双向边,使得去掉点v之后该图不连通; # yy了一个能联通的最小值,树,如果m<n-1则无解; then 最大值? 完全图,但是n-1个点的完全图,要抠出一个孤立的点只和v连接,确保v是割点 =(n-1)*(n-2)/2+1; # 先判无解再输出方案
阅读全文
摘要:#第一以为是直接传送看贝西会不会无限循环那道题,直接洛谷搬过来交了一发,wa了 哦,不是,是时间旅行者JOHN. #建图+判负环 虫洞单向边,权值为负; 路径双向边,权值为正; #判负环的条件是入队次数>n 坑点: 听说poj的评测机菜到动用min不行要手写if; 还听说连三目运算都会被卡; 我的坑
阅读全文
摘要:#可以选择步行也可以选择坐地铁,坐地铁快,求家到学校距离 #有点像做过的某题,不同岛间有航道,岛上有不同的上岸点,做法是分开内部处理好后再总的跑一遍最短路#考虑这样建图: 假如没有地铁,所有点之间只能步行,先建一波。 有地铁是对步行的优化,在地铁间再建一波。 把这些点扔进去一起跑最短路。 -- 待填
阅读全文
摘要:——一切都回来了,用csj的话。 这货上次在群里说一道spfa判负环的题改半天,改出来的那刻觉得一切都回来了。 hh,都想起来了吗,在机房被支配的恐惧和ac的快乐。 # 觉得这个n可以用弗洛伊德,但觉得弗洛伊德维护不了那么复杂的情况 # 写了一个dij—— 那么问题来了,dij的板子里有一个是vis
阅读全文
摘要:这题和kuangbin并查集专题的“how many answer are long”思想神似 但要离散化 # 离散化后,总数也变了,写程序时没有变过来,造成re,找了半小时 # unique的用法是(a+1,a+1+len)-(a+1),类似于sort; 如果不打二分的话,lowerbound应该
阅读全文
摘要:思路是记录相对于父节点的偏移量 分别维护x和y即可 #第一个坑在读入既有数字又有字符的时候,要写成: scanf("%d%d%d %c"),否则老锅。 #第二个坑是实现operation和查询的时候,处理p1和p2没写好,造成溢出了。 锅着,仍然re,待填ing。 #include <iostrea
阅读全文
摘要:思路如题。 但坑点是: #会出现0,0这样单组的数据,并且要求你输出yes 这个没有那位兄弟的提醒我是想不到的 #题目看似要求你判断是否为树,实际上除了flag==0以外,还得联通。 第一次wa在0,0,第二次wa在没有判断联通。第三次wa在处理第一次的wa时,用了一个continue,下面的ok就
阅读全文
摘要:第一眼见这题目还以为它说的是一个bug的一生。。 带权dsu。 比普通并查集多记录了额外的信息,比如这道相对于父亲节点的关系。 我们并不care它爸爸到底是男是女,或者它自己是男是女,我们只需要知道它们是不是同类。 用1表示异性,0表示同性,这是一个找同性恋的题。 公式可以用%的形式写,也可以像我这
阅读全文
摘要:永远也不退役,无论有多少人比我强都不退役,关我屁事 活着就不退役 我永远肝 #include<bits/stdc++.h> using namespace std; const int maxn=1e6; int cnt=0,n,m,s,dis[maxn],vis[maxn],head[maxn];
阅读全文
摘要:跑两遍dij 其中第二遍把所有边反向 问题在于如何把各类边和dis清干净 2021 09 29 待补 2021 10 05 #include <iostream> #include <math.h> #include <string.h> #include <vector> #include <ma
阅读全文
摘要://可是spfa会被卡得很惨很惨wa//待补充dij#include <iostream> #include <math.h> #include <string.h> #include <vector> #include <map> #include <queue> #include <stdio.
阅读全文
摘要:我的思路是二分出答案,然后跑n3的弗洛伊德判断当以这个答案作为最大值时,能不能到目的 但是t了,一想, 200*200*200=800,0000; 极限情况是32 32个八百万,爆炸了。 错误代码: (t了但是理论上可行 #include <iostream> #include <math.h> #
阅读全文