![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树
&稚始稚终
这个作者很懒,什么都没留下…
展开
-
2020 CCPC 绵阳站 :J. Joy of Handcraft
J. Joy of Handcraft题目大意:给你n盏灯,每盏灯亮的周期为ti( 1 ~ ti 亮,ti+1 ~ 2ti灭,然后循环往复),每盏灯的亮度为 xi。问你 1~m 中每一秒最亮的灯的亮度。思路:对于相同周期的灯泡,我们保留最亮的那一盏就行,这样最多也只有n种周期,把下放的点加起来,发现是调和级数,复杂度是log级别的。然后用线段树正常维护和修改线段树的区间最大值即可。最后算法的复杂度为 nlogmlogm。AC Code#include<bits/stdc++.h>u原创 2020-11-24 22:41:25 · 1082 阅读 · 0 评论 -
2019 CCPC 秦皇岛 :Forest Program
(本篇要点)dfs找环并计算图中环的长度。Forest Program题目传送门:Forest Program题目大意:有n个点和m条无向边,要删去一些边使得剩下部分都为树(就是没有环)。问有多少删的方法。思路:如果n条边刚好构成一个环,那么这些边中就必须至少删去一条边,那么对于答案的贡献就是 res = res * ( 2 ^ n - 1 )。如果n条边不够成环,那么怎么删都可以,那么对于答案的贡献就为 res = res * 2^n 。所以关键就是dfs,找到每个环,并计算每个环的长原创 2020-11-23 22:24:55 · 1862 阅读 · 5 评论 -
求树的直径的两种方法
树的直径树型dp求树的直径优缺点:优点为可以处理边权为负的情况,但不易得到直径的路径(指树的直径经过什么点)。代码模板:#include<bits/stdc++.h>using namespace std;const int N=1e5+10;int head[N],cent=0;int n;struct Tree{ int v,w; int next;}tr[N*2];void add(int u,int v,int w){ tr[cent]原创 2020-11-22 23:11:15 · 632 阅读 · 0 评论 -
Codeforces 1280C: Jeremy Bearimy
Jeremy Bearimy(这道题目是树上点对距离和的最大值和最小值问题)题目传送门:Jeremy Bearimy题目大意:给你一棵有2n个点的带权树,任意选择n对点,求每对点之间的距离的和的最大值与最小值。思路:考虑最小值:贪心思想。既然是求最小值,那么我们肯定要选取尽可能少的边。当一条边的两边都为奇数点时,这条边必须加到结果中。因为当一端点的数量为奇数时,他们不能两两配对,那么必然有点需要经过这条边去另一边寻找点进行匹配。那么自然可以想到当一条边的两端都为偶数点时,两端的点都可以自行匹配原创 2020-11-05 20:15:18 · 844 阅读 · 0 评论