04 2015 档案

摘要:我写的是 DFS序+线段树DFS序(出去的位置要单独建点)上,进入的位置是权值,出去的位置是权值的相反数,可以证明节点i到根节点的路径上的点的权值和是DFS序上1~in[i]的和。只要搞出每个区间的进入位置和出去位置的和,就可以打标记了。 1 /**************************... 阅读全文
posted @ 2015-04-30 16:33 idy002 阅读(349) 评论(0) 推荐(0)
摘要:树形DP,dp[i][j]表示i子树中,选了j个白点,i子树中所有边的贡献。 1 /************************************************************** 2 Problem: 4033 3 User: idy002 4 ... 阅读全文
posted @ 2015-04-30 16:24 idy002 阅读(340) 评论(0) 推荐(0)
摘要:时间分治(又叫cdq分治),是解决一类“贡献独立”、“支持离线”的数据结构问题的算法。假设有一个操作序列:ABAABAABBAAAB,其中每个A对其后面的B有一定贡献,要求输出每个B对应的答案。“贡献独立”是指:每个A对其后面的B的影响是不受其他A影响的,即是要我们用B前面的所有A更新过B,那么B的... 阅读全文
posted @ 2015-04-29 11:17 idy002 阅读(310) 评论(0) 推荐(0)
摘要:整体二分。首先,第k大问题是满足二分性的(只要我们能够快速求出集合中比某个数小的数的个数,那么就可以快速找出该集合的第K大)。然后考虑整体二分,关键是我们怎么将询问分到其对应的答案子区间中。和普通的区间第K大的做法一样,我们先将修改按照大小排序(普通的区间第K大就是给出的原序列,而这里就是区间修改)... 阅读全文
posted @ 2015-04-28 21:34 idy002 阅读(331) 评论(0) 推荐(0)
摘要:可以用二维树状数组套值域线段树来做,复杂度:O( (n*n+q) * logn logn log10^9 )但作为作为整体二分的例题,还是用整体二分来写了一下。对整体二分有一点感觉了。整体二分,顾名思义,二分答案,只不过不是对单独一个询问,而是对所有询问,具体过程可以想象成对询问的不断分类(根据其答... 阅读全文
posted @ 2015-04-28 17:05 idy002 阅读(319) 评论(0) 推荐(0)
摘要:没有正确分析路径可能的条数,它是指数增长的,会爆long long。然后就是正反两次时间分治。另一个就是max with count,即带计数的最值,即除了记录最值,还要记录最值取得的次数。 1 /**************************************************... 阅读全文
posted @ 2015-04-28 14:17 idy002 阅读(289) 评论(0) 推荐(0)
摘要:这道题真好。。。首先,感觉像DP,但是如果按照原题意,有无数个状态,每个状态又有无数个转移。然后思考,我们每次买一部分和卖一部分的原因是什么,如果没有那个比例(就是rate=1恒成立),那么很容易贪心证明每次必须买完或卖完,但加了比例后就没那么好证明了,感觉一下吧。然后就可以写DP方程了(dp[i]... 阅读全文
posted @ 2015-04-26 11:14 idy002 阅读(239) 评论(0) 推荐(0)
摘要:题意:给你一些三维上的点,对于每个点,统计三个坐标都小于等于该点的点数。如果点的范围在300以内,可以用三维树状数组搞,但这题坐标范围太大。考虑将所有点按照x坐标排序,从左到右,相当于在一个二维平面上插入点,并询问某个点左下方的点数,而后者可以按时间分治,在O(nloglog)复杂度内搞定。(其实可... 阅读全文
posted @ 2015-04-25 18:04 idy002 阅读(268) 评论(0) 推荐(0)
摘要:收获: 1、min, max, sum, 属于判定,等询问是”对象对答案贡献独立“,即不需要其他对象就了能更新答案,并保证只要所有对象更新过答案,那么该答案就是正确的。大概这就是所谓的”修改独立“。 2、处理”先把所有修改给你,再询问“问题时,这道题要用到降维思想,就是处理的顺序也是一维,并且这... 阅读全文
posted @ 2015-04-25 12:10 idy002 阅读(199) 评论(0) 推荐(0)
摘要:根据“点在圆内”关系,列出点P(x0,y0)在圆C(x,y)内的关系:(x-x0)^2+(y-y0)^2 = x0^2+y0^2然后我们就可以把一个点当成一条线,一个圆当成一个点,通过上面的表达式来转换,这样“点在圆内”的关系就转化成了“点在半平面内”的关系。这样原问题就转化成了不断的加点,然后询问... 阅读全文
posted @ 2015-04-25 09:50 idy002 阅读(282) 评论(0) 推荐(0)
摘要:朱刘算法求无根最小树形图可以任意选一个根,求最小的权和以及当时的根。先建一个超级根,它连向所有点,边权为所有边的边权和加1(即sumw+1),然后求以它为根的最小树形图,再根据树形图权和与2*(sumw+1)的关系判断是否存在解(如果大于等于就不存在,否则存在)。至于求对应的原图中的根,我们发现自始... 阅读全文
posted @ 2015-04-23 16:23 idy002 阅读(177) 评论(0) 推荐(0)
摘要:朱刘算法步骤: 1、计算出每个点边权最小的边的权(如果除根以外有其他的点没有入边,则不存在最小树形图),并记下边的另一个端点(称其为这个点的前趋) 2、沿着每个点向上走,如果在走到根或环上的点之前,就遇到走过的点,那么就出现环了。将环上的点标记一下当前环的编号,并将环上的所有边的边权加在答案里。... 阅读全文
posted @ 2015-04-23 15:08 idy002 阅读(228) 评论(0) 推荐(0)
摘要:求一个字符串在旋转置换群下最小字典表示。用的是后缀数组(后缀自动机还是再听听jason_yu讲讲吧,关于right集合的部分还有问题)最小表示法的思想很有好(判断两个对象在某一置换群划分下,是否等价,可以求出两个对象在该置换群划分下的最小表示,然后比较最小表示) 1 #include 2 #inc... 阅读全文
posted @ 2015-04-23 10:01 idy002 阅读(165) 评论(0) 推荐(0)
摘要:二分+后缀数组在height数组上二分 1 /************************************************************** 2 Problem: 2946 3 User: idy002 4 Language: C++ ... 阅读全文
posted @ 2015-04-22 21:42 idy002 阅读(194) 评论(0) 推荐(0)
摘要:暴力。收获: 1、第一道后缀自动机,大概知道怎么写了,有一些原理性的东西还要理解。 2、计算right集合的大小 1 /************************************************************** 2 Problem: 2555 3 ... 阅读全文
posted @ 2015-04-22 20:30 idy002 阅读(272) 评论(0) 推荐(0)
摘要:三维凸包裸题。1、通过volume计算有向体积,判断点与面的位置关系。2、噪声 1 /************************************************************** 2 Problem: 1209 3 User: idy002 4... 阅读全文
posted @ 2015-04-13 23:17 idy002 阅读(192) 评论(0) 推荐(0)
摘要:这题调精度真痛苦啊(向管理员要了数据才调出来)。用的是hwd在WC2015上讲的方法,考虑将原图分割,根据每个圆的左右边界和圆与圆交点的横坐标来分割,这样原图就被分成很多竖着的长条,并且每一条中间都没有交点,这样就有一个性质:每一条都是"弓形-梯形-弓形 弓形-梯形-弓形..."的形式,然后从一个方... 阅读全文
posted @ 2015-04-13 10:29 idy002 阅读(304) 评论(0) 推荐(0)
摘要:最开始想到的是枚举3个点,另一个点用卡壳的思想,但实际上可以只枚举两个点(对角线上的两个点),其余两个点用卡壳。/************************************************************** Problem: 1069 User: idy0... 阅读全文
posted @ 2015-04-11 17:56 idy002 阅读(151) 评论(0) 推荐(0)
摘要:旋转卡壳的经典应用,实现时直接比较角度。 1 /************************************************************** 2 Problem: 1185 3 User: idy002 4 Language: C++ ... 阅读全文
posted @ 2015-04-11 15:49 idy002 阅读(172) 评论(0) 推荐(0)
摘要:对于很多决策单调性DP问题,我们很难(但不是不可以)证明其决策满足单调性,所以感觉很像时,可以打表看是否满足。这道题的精度(?范围)很难搞,开始生怕溢出,看了hzwer的代码,才发现用long double,因为这道题只有乘法,没有除法,并且long double的保存系数的那部分还是挺大的(好像有... 阅读全文
posted @ 2015-04-08 20:05 idy002 阅读(214) 评论(0) 推荐(0)
摘要:决策单调性,对于一个1D/1D(状态是一维,转移也是一维)的DP,如果DP的决策具有单调性,那么就可以做到O(nlogn)的复杂度完成DP。感谢《1D/1D 动态规划优化初步》的作者。 1 /******************************************************... 阅读全文
posted @ 2015-04-08 16:38 idy002 阅读(220) 评论(0) 推荐(0)
摘要:回顾一下LCT,容易写错的地方: 1、每次断掉Splay中的边,必须update一下父亲节点,再根据具体情况是否splay父亲节点。 2、养成没有用的值(比如当pre[u]不为0时的pnt[u])不去乱修改的习惯。 1 /************************************... 阅读全文
posted @ 2015-04-06 20:53 idy002 阅读(206) 评论(0) 推荐(0)
摘要:每个点维护一颗以深度为下标,size-1为值的线段树,保存整颗子树的信息,这样就可以查询了,但是如果为每个节点都建立这么一颗树,显然会MLE,所以考虑在DFS序上建立主席树,然后每个节点原来对应的线段树树就是现在的两个线段树相减所得到的树。 1 /*************************... 阅读全文
posted @ 2015-04-06 11:27 idy002 阅读(167) 评论(0) 推荐(0)
摘要:以1号节点为根,弄出DFS序,我们发现,对于一个询问:(rt,u),以rt为根,u节点的子树中的最小点权,我们可以根据rt,u,1这三个节点在同一条路径上的相对关系来把它转化为以1为根的在DFS序上的区间询问(中间有一种情况要在树上倍增,理解了LCA的话应该很容易写出来)。收获:对于只有换根这种改变... 阅读全文
posted @ 2015-04-05 20:35 idy002 阅读(278) 评论(0) 推荐(0)
摘要:和BZOJ消耗站一样,先将那个询问的简图构建出来,然后就是简单的树形DP。(倍增数组开小了,然后就狂WA,自己生成的极限数据深度又没有那么高,链又奇迹般正确) 1 #include 2 #include 3 #include 4 #include 5 #define min(a,b... 阅读全文
posted @ 2015-04-05 19:02 idy002 阅读(198) 评论(0) 推荐(0)
摘要:第一道"虚树"题目(好吧,我也不知道这是不是虚树,但和虚树的思想肯定是一样的,都是简化树结构)这一类算法核心思想都是简化树结构,只取我们必须的节点和一些信息,然后在简化后的树结构上工作。首先,如果这道题只有一次询问,那么很容易想到树形DP的解法,但这道题又多组询问,并且限制了所有询问的关键点个数,这... 阅读全文
posted @ 2015-04-05 12:15 idy002 阅读(247) 评论(0) 推荐(0)
摘要:感觉做这种题收获很大。1、DFS序(广义上)除了用于静态子树操作,也可以用来做点到根的路上某些信息的统计(如点到根的路径上标记了多少个点),如果在加上lca,就可以支持路径的信息查询。2、树上的可持久化线段树,如果每个节点要维护一个线段树,并且该线段树支持加减操作,那么通过可持久化+lca,搞定一条... 阅读全文
posted @ 2015-04-01 20:40 idy002 阅读(238) 评论(0) 推荐(0)