摘要: 例题 : codevs 4650 破损的键盘 手打版 Stl 版 阅读全文
posted @ 2017-11-08 20:56 loi_maple 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 int N; 9 int h[10010]; 10 11 void heap(int n) 12 { 13 while((n=1;--i) 25 heap(i); 26 } 27 int ... 阅读全文
posted @ 2017-11-08 17:07 loi_maple 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 例题:codevs 2370 小机房的树 简单来说就是给你一个n个点的树,每一条边都有边权。询问有m次,每次给出两个点,求他们之间的最小边权和。 很容易想到用求树上前缀和和lca,先把两个点跳到高度相同的地方,再一直往上跳,直到两个点重合。因为一个点一个点的跳太慢了,所以我们倍增的跳来求lca。 令 阅读全文
posted @ 2017-11-08 16:40 loi_maple 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 先来看看一般的问题:给你n个点,m条边,每条边都有一个边权,问你保留哪些边才能使n个点都互相连通同时边权和最小,求最小边权和。 不难想到只要要建一棵树(n-1条边),同时保证边权和最小。 kruskal算法:利用贪心的思想,把边按照边权从小到大排序,每次对于当前边,检查终点和起点是否连通,若不连通就 阅读全文
posted @ 2017-11-08 16:23 loi_maple 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 树的直径为树上最长的一条路径(不经过重复节点),也可以看做是树上最长路。 通常的求法: 1.两边Bfs或两边Dfs 2.树形dp(端点为根和仅经过根)。 emmm 。。蒟蒻表示目前只会第一种QAQ。 从树中找出任意一点,求出与他距离最远的点s,再用同样的方法求出与s距离最远的点t,s-t即为树的直径 阅读全文
posted @ 2017-11-08 16:08 loi_maple 阅读(1118) 评论(0) 推荐(0) 编辑
摘要: *今天考试考到了区间最大值和最小值,才想起我不会st表QWQ,看了网上的模板,决定做个题并且整理一下。。。 例题:codevs 2173 忠诚 ::去原题 st表分为离线预处理(nlogn)和查询两部分(O(1))。 * 预处理: 用一个二维数组st[i][j]存储以位置i为首的长度为2^j的区间的 阅读全文
posted @ 2017-11-08 07:49 loi_maple 阅读(782) 评论(0) 推荐(0) 编辑