摘要: bzoj1787就是bzoj1832 bzoj1832 空间和时间少了一些。。。 求三个结点到一个结点距离之和最小的结点以及距离和 求出两两lca,其中有两个相同,答案则为另一个 感觉就是一大暴力。。。 阅读全文
posted @ 2016-05-14 22:27 Yangjiyuan 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 举例: 给出一数组A[0~5] = {5,4,6,10,1,12},则区间[2,5]之间的最值为1。 方法:ST算法分成两部分:离线预处理 (nlogn)和 在线查询(O(1))。虽然还可以使用线段树、树状链表等求解区间最值,但是ST算 阅读全文
posted @ 2016-05-14 20:34 Yangjiyuan 阅读(1084) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 typedef long long LL; 10 11 #define N 100010 12 13 struct Node 14 { 15 ... 阅读全文
posted @ 2016-05-14 17:09 Yangjiyuan 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 将k对点两两相连,求最小长度 易证得,最优方案中,相连的办公楼一定是取相邻的比取不相邻的要更优 然后就可以用贪心来做这道题了。。 将初始所有的线段放进堆里 每次取最短的线段进行连接,且ans+=a[i] 取完后删除当前线段,与相邻的两条线段,同时再插入新边,权值为a[pre]+a[next]-a[n 阅读全文
posted @ 2016-05-14 14:23 Yangjiyuan 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目意为:给一颗二叉树,每一次操作可以交换该子树的左右两颗子树,要将该树变为完全二叉树,求最小操作次数。从根开始进行一遍DFS。记录每棵子树的大小size,如果左子树的size小于右子树的size那么答案+1。实际上并不需要真的将两颗子树交换。接下来就是处理无解的情况了。我们进行分类讨论。 1. 由 阅读全文
posted @ 2016-05-14 10:47 Yangjiyuan 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 我们考虑树剖,线段树上维护一个堆,保存不经过该段区间的路径的权值。 对于一条路径我们将对于线段树中的区间提取出来,在对于线段树中进行修改。也就是在堆中插入或删除。 对于一次询问,只要找到包含该点的线段中堆顶权值最大的就行了。 阅读全文
posted @ 2016-05-14 08:55 Yangjiyuan 阅读(283) 评论(0) 推荐(0) 编辑