一名苦逼的OIer,想成为ACMer

Iowa_Battleship

随笔分类 -  图论

上一页 1 2 3 4

JoyOI1940 创世纪
摘要:一道基环树+树形$DP$ "原题链接" 显然输入的是内向基环树森林,且我们可以单独考虑每一棵基环树。 既然是基环树,自然先$dfs$找环,然后随便找环上的一点$r$,将其与$A[r]$的边断开,建反边,这时就会形成一棵以$r$为根的树,且每个点的子节点都是能限制它的元素。 于是我们可以在这棵树上跑树 阅读全文

posted @ 2018-09-07 20:55 Iowa_Battleship 阅读(186) 评论(0) 推荐(0) 编辑

BZOJ1791或洛谷4381 [IOI2008]Island
摘要:一道基环树的直径 "BZOJ原题链接" "洛谷原题链接" 又是一道实现贼麻烦的题。。 显然公园其实是基环树森林,求的最长距离其实就是求每一棵基环树的直径的总和。 对于每棵基环树,其直径要么经过环,要么是某个环上点的子树的直径。所以我们可以先找出它的环,然后对环上的每个点进行$dfs$(不能经过环上的 阅读全文

posted @ 2018-09-06 20:43 Iowa_Battleship 阅读(146) 评论(0) 推荐(0) 编辑

洛谷1084 疫情控制
摘要:一道贪心+LCA倍增法的预处理+二分答案 "原题链接" 又是一道细节贼多的题。。敲了我一个晚上。。 显然可以二分答案,然后就是判定的问题。 贪心地发现军队越在靠近首都的点建立检查站,则贡献越大。所以我们让所有军队都往首都靠近,这时所有军队要么无法到达首都的子节点,要么已经到达首都的子节点,而对于前者 阅读全文

posted @ 2018-09-05 19:20 Iowa_Battleship 阅读(319) 评论(0) 推荐(0) 编辑

BZOJ1977或洛谷4180 [BJWC2010]次小生成树
摘要:一道LCA+生成树 "BZOJ原题链接" "洛谷原题链接" 细节挺多,我调了半天。。累炸。。 回到正题,我们先求出随便一棵最小生成树(设边权和为$s$),然后扫描剩下所有边,设扫到的边的两端点为$x,y$,长度为$z$,树上$x,y$间边权最大的边和严格次大的边分别为$dis_1,dis_2$。 如 阅读全文

posted @ 2018-09-03 14:53 Iowa_Battleship 阅读(265) 评论(0) 推荐(0) 编辑

CH#56C 异象石
摘要:一道LCA "原题链接" 先跑一边$dfs$,求出每个节点的时间戳,如果我们将有异象石的节点按时间戳从小到大的顺序排列,累加相邻两节点之间的距离(首尾相邻),会发现总和就是答案的两倍。 于是我们只需要维护这个按时间戳排序的有序数列和答案即可。 当插入一个新的节点$u$时,设插入位置的原有两节点为$x 阅读全文

posted @ 2018-09-02 19:56 Iowa_Battleship 阅读(205) 评论(0) 推荐(0) 编辑

POJ3417 Network
摘要:一道LCA+树上差分 "原题链接" 显然每一条新增边都会导致环。 如果试着举些例子的话,很容易发现割掉非环上的边,则割掉其他任意一条新增边都可达成目标;若割掉的原有边是一个环上的边,那么只有割掉导致这个环出现的新增边才能使得图变为不连通的两部分。若割掉的边是两个或两个以上的环上的边,那么无论第二次怎 阅读全文

posted @ 2018-09-02 19:28 Iowa_Battleship 阅读(124) 评论(0) 推荐(0) 编辑

HDOJ2586 How far away ?
摘要:一道LCA模板 "原题链接" $LCA$模板题,不解释。 倍增版 cpp include include include using namespace std; const int N = 4e4 + 10; int fi[N], da[N '9'; c = getchar()) p |= c = 阅读全文

posted @ 2018-09-02 19:00 Iowa_Battleship 阅读(118) 评论(0) 推荐(0) 编辑

BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防
摘要:一道树的直径 "树网的核 BZOJ原题链接" "树网的核 洛谷原题链接" "消防 BZOJ原题链接" "消防 洛谷原题链接" ~~一份代码四倍经验,爽~~ 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍历核上的每个点,用$dfs$求出核外节点到核的最大值即可,时间复杂度为$O( 阅读全文

posted @ 2018-09-02 17:01 Iowa_Battleship 阅读(155) 评论(0) 推荐(0) 编辑

BZOJ1912或洛谷3629 [APIO2010]巡逻
摘要:一道树的直径 "BZOJ原题链接" "洛谷原题链接" 显然在原图上路线的总长为$2(n 1)$。 添加第一条边时,显然会形成一个环,而这条环上的所有边全部只需要走一遍。所以为了使添加的边的贡献最大化,我们找出树的直径,将其两端点连上边即可。 设直径长$L$,于是路线总长就变为$2(n 1) L+1= 阅读全文

posted @ 2018-09-02 16:32 Iowa_Battleship 阅读(121) 评论(0) 推荐(0) 编辑

CH6202 黑暗城堡
摘要:一道最短路+生成树 "原题链接" 实际上就是生成树的中每个点到节点$1$的距离等于原图中这个点到节点$1$的最短距离,求这样的生成树的棵数。 先用$SPFA$或$Dijkstra$求出所有点到节点$1$的最短路径$dis[x]$,然后将所有节点按$dis$从小到大排序。 枚举$x$,表示已经有$x 阅读全文

posted @ 2018-09-02 16:11 Iowa_Battleship 阅读(236) 评论(0) 推荐(0) 编辑

POJ2728 Desert King
摘要:一道生成树+$0/1$分数规划 "原题链接" 设每条边的距离为$dis[x]$,两点高度差为$h[x]$,该图的生成树为$T$,则题目实际求的就是$\dfrac{\sum\limits_{x\in T}h[x]}{\sum\limits_{x\in T}dis[x]}$的最小值。 这就是经典的$0/ 阅读全文

posted @ 2018-09-02 11:30 Iowa_Battleship 阅读(82) 评论(0) 推荐(0) 编辑

JoyOI1391 走廊泼水节
摘要:一道另类生成树 "原题链接" 将输入的树的$n 1$条边按从小到大排序,然后$Kruskal$在生成该树的过程中计算新增边的总长。 当在连第$i$条边,设该边的两端点为$x,y$,长度为$z$,分别属于$S_x$和$S_y$两个并查集中。 而为了将树变成完全图,显然要将$S_x,S_y$两个并查集中 阅读全文

posted @ 2018-09-01 21:28 Iowa_Battleship 阅读(88) 评论(0) 推荐(0) 编辑

洛谷1073 最优贸易
摘要:最短路 "原题链接" 以$1$为起点在正图上跑$SPFA$或$Dijkstra$,求出$dis1[x]$,表示从$1$到节点$x$的所有路径中,经过权值最小的节点的权值;再以$n$为起点在 反图 上跑$SPFA$或$Dijkstra$,求出$dis2[x]$,表示从$n$到节点$x$的所有路径中,经 阅读全文

posted @ 2018-08-25 20:18 Iowa_Battleship 阅读(144) 评论(0) 推荐(0) 编辑

POJ3662或洛谷1948 Telephone Lines
摘要:二分答案+单源最短路 "POJ原题链接" "洛谷原题链接" 显然可以二分答案,检验$mid$可以使用最短路来解决。 将大于$mid$的边看成长度为$1$的边,说明要使用免费升级服务,否则长度为$0$边,即不需要占免费的资格。 然后就可以在上面跑最短路,如果$dis[n] k$说明该答案不可行,将答案 阅读全文

posted @ 2018-08-25 20:08 Iowa_Battleship 阅读(164) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4

导航