上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 37 下一页
摘要: 题目传送门 解题思路: 本题直接跑一遍Kruskal,当成功加入n-k条边时即为目标状态。 AC代码: 阅读全文
posted @ 2019-07-28 10:51 Mr^Simon 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 因为所有的边权都为1,所以一个点的最短路就相当于是它在BFS搜索树中的深度。 一个点最短路一定经过了一个层数比它少一的结点(否则不是最短路)。 所以用每个相邻且层数比当前结点层数少一的点更新当前点的路径条数即可。 //来自GGN_2015大佬的思路 AC代码: 阅读全文
posted @ 2019-07-28 10:45 Mr^Simon 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 传送门 AC代码: 阅读全文
posted @ 2019-07-27 22:52 Mr^Simon 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 这是一道floyed的题。但是有所不同的是,这道题里的点是有时间限制的。 所以说我们在做floyed的时候,我们不能直接枚举所有中转点,而是按照时间来进行。 以及,有可能出现询问的时候两个点没有修好,我们还要判断这个。 而且在这道题里,询问的t是不下降的,这样我们就不用考虑数 阅读全文
posted @ 2019-07-27 21:01 Mr^Simon 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 本题为加权并查集,首先看题,很容易想到的一个贪心策略就是尽可能把较大的分开。我们边权从大到小排序,尽可能把危害大的两个罪犯分开,再将敌人的敌人和自己合并。直到发现有一对有冲突的罪犯不可避免的被分到了一起,就输出冲突值,即为答案。如果一直到最后都没有冲突,输出0. AC代码: 阅读全文
posted @ 2019-07-25 11:00 Mr^Simon 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 自己懒得写,看一位大佬写的不错(三种方法)。//任意门 AC代码: 倍增做法: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 5 using namespace std; 6 7 int n,m,s 阅读全文
posted @ 2019-07-25 09:45 Mr^Simon 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 并查集,逆序做(即先假设给的k个星球全都被炸,求出此时的联通块个数,就是经过k次打击的联通块个数。然后再加上最后一个被炸的星球,就求出了经过k-1次打击的联通块个数。。。以此类推,最后把所有点都加进去,就求出了经过0次打击后连同块个数) //转载自:https://www.l 阅读全文
posted @ 2019-07-24 22:04 Mr^Simon 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题目传送门 解题思路: 首先,把A和B两个序列分别从小到大排序,变成两个有序队列。这样,从A和B中各任取一个数相加得到N2个和,可以把这些和看成形成了n个有序表/队列: A[1]+B[1] <= A[1]+B[2] <= … <= A[1]+B[N] A[2]+B[1] <= A[2]+B[2] < 阅读全文
posted @ 2019-07-24 22:00 Mr^Simon 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 题目原网址:https://www.luogu.org/problemnew/show/P1886 解题思路: 维护一个单调队列, 假如我们先求最小值,保证队首就是最小值,满足滑动窗口长度时输出队首; 例如样例 1 3 -1 -3 5 3 6 7 第一步 1 先入队了 第二步 1 小于3 没问题 所 阅读全文
posted @ 2019-07-24 13:06 Mr^Simon 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 原题目链接:http://poj.org/problem?id=2559 解题思路: 用单调栈求任意每个区间的最小值及区间长度,为什么记录区间最小值呢?(木桶装水原理,装水量取决于最短木板长)。枚举每个区间,维护最大答案。 //自行百度单调栈 AC代码: 阅读全文
posted @ 2019-07-24 12:48 Mr^Simon 阅读(126) 评论(0) 推荐(0) 编辑
上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 37 下一页