随笔分类 -  数据结构

摘要:题意:求在平面上 任意两点连线,原点到这个点的距离小于d的点对有多少个,n=200000;解: 以原点为圆心做一个半径为d的圆,我们知道圆内的点和园内以外的点的连线都是小于d的还有,圆内和园内的点联线也是小于d的,那么需要处理的是圆外和圆外的点。以每个圆外的点 向圆做切线 然后我们知道有绿色点区域是... 阅读全文
posted @ 2015-11-05 09:30 来自大山深处的菜鸟 阅读(254) 评论(0) 推荐(0)
摘要:提交题意:给了两棵树,他们的跟都是1,然后询问,u,v 表 示在第一棵树上在u点往根节点走 , 第二棵树在v点往根节点走,然后求他们能到达的最早的那个共同的点解: 我们将第一棵树进行书链剖,然后第二棵树采用主席树,他的信息来自他的父亲节点,每个点存他在第一棵树 树链剖分后的位置,这样我们每次查询uv... 阅读全文
posted @ 2015-11-04 20:17 来自大山深处的菜鸟 阅读(241) 评论(0) 推荐(0)
摘要:题意:给了n个数,然后又m次查询,询问[L,R] 内有多少个数与其他的数不互质。解: 我们首先可以通过处理得出每个数的有效区间,LR 就是 左边L位置上的数 和他不互质, 右边R位置上的数和不互质, 我们对于询问排序,R小的排前面,枚举每个R,在loc位置就将第loc个点在loc的位置加上一个1在l... 阅读全文
posted @ 2015-11-03 21:43 来自大山深处的菜鸟 阅读(231) 评论(0) 推荐(0)
摘要:题意是给了 n个二元组 m个三元组, 二元组可以和三元组 合并生成3元组,合并条件是 与合并成 前提是 b==e,如果存在组合 uwv 使得u>=a w>=c v>=d 并且uwv和acd不等 就说abc 不是最优的,求问最后又多少个组合是最优的 , 这个组合中是允许重复的我们对于每个b只取最大的... 阅读全文
posted @ 2015-11-03 17:50 来自大山深处的菜鸟 阅读(283) 评论(0) 推荐(0)
摘要:这题说的是给了一个数组,按照他给的顺序依次删除数,在删除之前输出此时的逆序对个数我们用Fenwick树 维护这整个数列, C[i]是一个 treap的头, 管理了在树状数组中 能影响他的点,然后我们用名次树去计算 在C[i]下小于等于要删除的那个数的个数就ok了。#include #include ... 阅读全文
posted @ 2015-10-24 11:43 来自大山深处的菜鸟 阅读(235) 评论(0) 推荐(0)
摘要:2015-10-0720:44:42题意问的是给了一颗树,然后又1000000次查询u,v,问不在树路径上的点的编号最小值,以1为根 建这颗树,然后在同一棵子树中的点子让就输出1 否则我们记录每个点从离1最近的那个点也就是1的孩子,到该点所经过的最小值,以及在他父亲到1的孩子,这段间和他不在同一条叉... 阅读全文
posted @ 2015-10-07 20:59 来自大山深处的菜鸟 阅读(192) 评论(0) 推荐(0)
摘要:这题说的给了一颗树 然后树上有一些整数值,分别由他给的那30个素数组成,有多少条路径的路径上的点的乘积为立方数, 把每个数分解成相应的素数模3后的值,然后压缩为一个3进制的数然后进行树的分支#include #include #include #include #include #include u... 阅读全文
posted @ 2015-10-07 14:21 来自大山深处的菜鸟 阅读(152) 评论(0) 推荐(0)
摘要:2015-10-0621:49:54这题说的是个给了一个数组,然后删除任意起点的一个连续的L个数,然后求最长递增子序列《是递增,不是非递减》,用一个树状数组维护一下就ok了#include #include #include #include #include using namespace std... 阅读全文
posted @ 2015-10-06 21:55 来自大山深处的菜鸟 阅读(201) 评论(0) 推荐(0)
摘要:寻找树上存在长度为k点对,树上的分治 代码和 这个 差不多 ,改一下判断的就好#include #include #include #include #include using namespace std;const int maxn=10004;int H[maxn],nx[maxn*2],to... 阅读全文
posted @ 2015-10-05 20:39 来自大山深处的菜鸟 阅读(242) 评论(0) 推荐(0)
摘要:题意是说给了n个点的树n#include #include #include #include using namespace std;const int maxn=20005;int H[maxn],nx[maxn*2],to[maxn*2],numofE,dist[maxn*2];void ad... 阅读全文
posted @ 2015-10-05 17:38 来自大山深处的菜鸟 阅读(226) 评论(0) 推荐(0)
摘要:2015-09-2814:11:36 by opas这题给的是一个字符串 把其中一些子串给取出来 判断是否是周期为d的字符串 还需要把 其中的一个区间完全变成一个数 ,然后在查询,我们把每个字符串进行hash 不管结果怎么样hash 然后进行区区间判断 。。 还是存在概率性的错误的#include ... 阅读全文
posted @ 2015-09-28 14:18 来自大山深处的菜鸟 阅读(213) 评论(0) 推荐(0)
摘要:D分4种情况讨论1 不需要加边 , 就是说原本就有一个奇数环,我们只要跑一次二分图就好了2 加一条边 , 也就是说存在大于等于3个点的联通块 我们对于这个联通块也跑一遍二分图, 可以知道图中所有的 同颜色染色中的点任意相连,都是一个奇数环,那么对于每个联通分量都有相应的数可以计算3 加两条边,也就是... 阅读全文
posted @ 2015-09-15 22:31 来自大山深处的菜鸟 阅读(175) 评论(0) 推荐(0)
摘要:这题说的找出一个数组串 3等分 第一个部分和第3个部分一样,第二个部分和第一个部分回文,那么计算出这些字符串问这样的字符串最长为多少,我们先使用manacher 计算出每个位置以他为对称轴左边端点的最长回文半径 加入第i个位置 回文半径为 d[i],那么他能影响的范围为d[i]-i至i 如果他是那个... 阅读全文
posted @ 2015-09-09 17:02 来自大山深处的菜鸟 阅读(225) 评论(0) 推荐(0)
摘要:题意是给了 n 个点的树,会有m条链条 链接两个点,计算出他们没有公共点的最大价值, 公共点时这样计算的只要在他们 lca 这条链上有公共点的就说明他们相交dp[i]为这个点包含的子树所能得到的最大价值sum[i]表示这个点没有选择经过i这个点链条的总价值两种选择这个点没有被选择 dp[i]=... 阅读全文
posted @ 2015-09-07 14:02 来自大山深处的菜鸟 阅读(217) 评论(0) 推荐(0)
摘要:题意:对于一个1000*1000的Mushroom,起点在(1,1)给定一个斜率和一个x,求由斜率和x所对应的直线构成的三角形内蘑菇的总值。每个点的对应的值为(x+A)(y+B)解每个点都有一个相对于(1,1)的一个斜率我们就按照这个斜率的大小进行排序 大的放在后面然后我们对于每个要查询的点的斜率的... 阅读全文
posted @ 2015-09-04 13:46 来自大山深处的菜鸟 阅读(296) 评论(0) 推荐(0)
摘要:将树映射在线段上进行操作 然后每个 重链变成一个连续的区间#include #include #include #include #include #pragma comment(linker,"/STACk:10240000,10240000")using namespace std;const... 阅读全文
posted @ 2015-08-01 23:35 来自大山深处的菜鸟 阅读(163) 评论(0) 推荐(0)
摘要:这题说的是给了三维空间然后操作 寻求在 x1,y1,z1 x2, y2, z2; (x1#include #include #include using namespace std;const int maxn=50005;struct point{ int x,y,z,delt,qnum,k... 阅读全文
posted @ 2015-08-01 23:34 来自大山深处的菜鸟 阅读(232) 评论(0) 推荐(0)
摘要:hdu5125 他说的是n个人每个人都有两个气球a,b,气球各自都有相应的体积,现在让他们按照序号排列好来,对他们的a气球体积值计算最长上升子序列,对于这整个排列来说有m次机会让你将a气球替换成b气球(允许不使用完),问最后的最长上升子序列的长度是多少,哈哈,当然用dp的思想我们很容易就能知道状态的... 阅读全文
posted @ 2015-08-01 23:33 来自大山深处的菜鸟 阅读(310) 评论(0) 推荐(0)
摘要:转自http://vawait.com/manhattanmst/严谨的论文请看:戳这里或者戳这里,还有一个blog的也可以看看:戳这里。可以证明每一个顶点在最小生成树中在这45度的范围内至多仅有一条边与之相连,也就是如果以一个点为原点,那么上面分成的八个区域里面最多和每个区域连一条边。首先只考虑R... 阅读全文
posted @ 2015-08-01 23:32 来自大山深处的菜鸟 阅读(212) 评论(0) 推荐(0)
摘要:这题题意是 给了n个城市 在其中小于等于k个城市建立机场然后 使得最远的那个离机场的城市距离最短二分答案 ,我们对于每次的mid 重新建图然后再来一次DLX,每个点可以覆盖的点建立一条联系就ok了#include #include #include #include #include using n... 阅读全文
posted @ 2015-07-31 21:25 来自大山深处的菜鸟 阅读(124) 评论(0) 推荐(0)