"题目链接" 转换一下问题就是求每个点的最大长度,容易想到树的直径,一个点的最大长度就是他到两个端点长度的最大值,那我们就可以跑3遍dfs,第一遍求出直径的一个点,第二遍求出每个点到这个点的最大距离,第三遍利用第二遍求得的直径的另一点,反向跑,答案就是两者的最大值 这题好像还可以用点分治或者两遍df ...
分类:
其他好文 时间:
2020-02-26 23:23:24
阅读次数:
114
产生冠军 思路:这道题,先读题分析,我们可以知道,为了产生冠军,会进行两两比赛,让我们寻找一种办法判断是否产生冠军,既然提到了方法,那么意味着,必有一个简便方法来判断是否有冠军,因为,两两发生比赛,一个人可能产生多场比赛,但是,我们换成一下思路,什么是冠军,冠军即使唯一没输过的人,所以,当全部人数- ...
分类:
其他好文 时间:
2020-02-26 22:41:20
阅读次数:
55
ABC实在是没什么好说的,但是D题真的太妙了,详细的说一下吧 首先思路是对于a相等的分类,假设有n个,则肯定要把n-1个都增加,因为a都是相等的,所以肯定是增加t小的分类,也就是说每次都能处理一个分类,复杂度是O(n^2),这个思路很好写,优先队列随便搞一下就行了,但是题目中N = 2 * 1e5, ...
分类:
其他好文 时间:
2020-02-26 18:34:55
阅读次数:
67
Ignatius and the Princess IV 先搬中文 Descriptions: 给你n个数字,你需要找出出现至少(n+1)/2次的数字 现在需要你找出这个数字是多少? Input 本题包含多组数据,请处理到EOF: 每组数据包含两行。 第一行一个数字N(1<=N<=999999) , ...
分类:
其他好文 时间:
2020-02-26 16:50:24
阅读次数:
59
新人题:n2的排序就可以过 #include <stdio.h> #include <stdlib.h> int main() { int c,n,i,j,o; float a[1010],b[1010],m,d,e,f; scanf("%d",&c); for(o=0;o<c;o++) { e=0 ...
分类:
其他好文 时间:
2020-02-26 01:39:50
阅读次数:
44
题目大意: 一个 $n \times m$ 的地方,每个格子都有方向,问最少要多少个装置从任意一点出发都会碰到装置。 正文: 如果格子连在一起成为一条路的话,其实只用求路的条数就行,考虑用并查集。 代码: ...
分类:
其他好文 时间:
2020-02-26 01:16:54
阅读次数:
55
题意:就是连连看,有两个相同的就能消除,再加上两个特别的规定,一是只能从栈顶开始消除,而是两个相同的元素之间距离不能超过6,询问能否消除序列中所有元素。 思路:数据水,贪心就能过,但严谨的考虑,贪心显然不能解决所有问题。这题虽然序列很长,但是状态并不复杂,可以使用滚动的状压dp,然后考虑使用多少位表 ...
分类:
其他好文 时间:
2020-02-25 23:10:17
阅读次数:
60
首先提取题目信息,我们需要计算朋友的关系,以及计算不开心值。 其实看题目我们很容易就有并查集的感觉,之后我们要去验证这个算法是正确的 题目要求的是求不开心值,那么我们就可以想到使用并查集求集合总数就可以了 虽然朋友不存在传递性,但是这并不影响不开心值的大小,因为如果a和b是朋友,b和c是朋友 那么虽 ...
分类:
其他好文 时间:
2020-02-25 21:45:31
阅读次数:
105
http://acm.hdu.edu.cn/showproblem.php?pid=3581 题意: 数轴上给出n条线段,m个点,问任意两对点构成的线段被多少条线段包含 枚举给出的线段[x,y] 枚举被包含线段起点[第一个>=x的点,最后一个<=y的点] 被包含线段终点是最后一个<=y的点 差分前缀 ...
分类:
其他好文 时间:
2020-02-25 20:23:35
阅读次数:
56
本题从题目给出的条件我们发现了最小生成树的影子,也就是kruscal的影子 其实我们在写kruscal的时候就是利用并查集的思想来写的 这题需要注意的是,我们在求取的过程中l并不需要减少,我们只要最小生成树中的最大边权小于等于l就行了 这就让我们想到了可以从小到大对边权排序,之后枚举维护树集合,如果 ...
分类:
其他好文 时间:
2020-02-25 17:54:23
阅读次数:
69