Data structure
TIMELIMITE
Time is not enough. I must hurry up !
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
leetcode 1233 前缀字典树
前缀字典树原创 2022-07-09 15:33:33 · 500 阅读 · 0 评论 -
hdu 4417 求[l,r]区间内小于v的有多少个
// hdu 4417 求[l,r]区间内小于v的有多少个//// 解题思路:// // 函数式线段树.终于见识了一下这个高大上的数据结构// 当出现更新的时候将前面的线段树完整的保存下来,然后将// 需要更新的节点复制下来的同时,将其不更新的部分连接到// 前面一个线段树上.这样最省空间.并且多了一个性质,就是// 两个线段树之间的对应节点满足加减性质.这样就很好啦~~//原创 2015-10-25 15:43:42 · 898 阅读 · 0 评论 -
hdu5452 Minimum Cut 树链剖分 + 标记贡献
// hdu5452 Minimum Cut 树链剖分 + 标记贡献//// 解题思路://// 比赛的时候,大神给出了思路.对于给定的一条边u,v// 一定会在树上与LCA(u,v)形成一个环.这条边所作出的贡献// 就是u-v路径上所有的边都加一.最后求出边的最小的权值// 然后加1.开始用了一个线段树维护.然后果断TLE了.在我// 绝望的时候,发现了一篇大神直接模拟的过法原创 2015-09-21 19:34:21 · 685 阅读 · 0 评论 -
hdu 4123 Bob’s Race 树形DP + RMQ
// hdu 4123 Bob’s Race 树形DP + RMQ//// 解题思路://// 先求出每个点到树中其他点的最大距离.这个可以看hdu// 的2196 那个computer.然后用两个RMQ,一个保持最大值,一个// 保持最小值.用所谓的尺取法,求连续的一段区间的最大值和// 最小值.然后就可以啦~~~//// 感悟:// // 开始训练的时候,这种dp没原创 2015-11-09 17:12:53 · 617 阅读 · 0 评论 -
poj 3237 Tree 树链剖分
// poj 3237 Tree 树链剖分//// 解题思路:// // 树链剖分,维护一个最大值和一个最小值,// 区间更新,laz标记.单点更新,去掉叶子节点的laz// 标记.边权改为离根节点较远的点的点权.求lca// 的方式进行区间更新.注意线段树的操作以及push_up()// push_down()的操作.写了很久,感悟颇多,继续加油吧~~~#include原创 2015-09-19 23:58:03 · 513 阅读 · 0 评论 -
大视野 1208 Splay 初步
// 大视野 1208 Splay 初步//// 解题思路:// 要么都是宠物,要么都是人,而且是一个一个来的,那么只要简单的插入就好了// 一个一个的插入和查找,就能ac.#include #include #include #include #define For(x,a,b,c) for (int x = a; x <= b; x += c)using namesp原创 2015-10-09 16:25:57 · 446 阅读 · 0 评论 -
大视野 1503 郁闷的出纳员 Splay 初步
// 大视野 1503 郁闷的出纳员 Splay 初步//// 解题思路://// 参照大牛的思路,将增删所有的部分用一个变量w表示// 对于工资的加减就是对w的操作.插入的时候只要先减// 去这个影响就ok了.然后就是裸的Splay啦,注意第k多// 的意思是从大到小...好吧这里我傻逼了//// 感悟:// // 这道题坑爹的是就在于,我理解了思路,参照大神的原创 2015-10-06 21:33:06 · 417 阅读 · 0 评论 -
poj 2528 Mayor’s posters 线段树
// poj 2528 Mayor’s posters//// 题目大意:// 给你n张海报,每张海报是一段区间,问最后由几张还好能露出来//// 解题思路:// 线段树,别看那海报的区间范围很大,其实那些都没用.n才10000呢// 将区间离散化之后,然后在进行线段树的操作,但是注意在相差大于1// 的区间中间加上一个值,这样讲两个区间区分开,然后就是基本操作了// 挺好想原创 2015-11-03 21:16:22 · 568 阅读 · 0 评论 -
hdu 5489 Removed Interval LIS变形
// hdu 5489 Removed Interval LIS变形//// 解题思路:// f[i]为以a[i]为结尾的LIS// g[i]为以a[i]为开头的LIS// 对于截掉一段L而言,我们可以设将i位置前的L去除,但是// 保留i的这样的状态.这样dp[i] = max(dp[j]) (1<=j<=i-L) + g[i]// 再对dp[i]选出一个max就是最后的原创 2015-09-29 16:04:09 · 598 阅读 · 0 评论 -
hdu 5493 Queue 线段树
// hdu 5493 Queue 线段树//// 解题思路://// 线段树中记录区间的位置的总数.对于第i个人他// 前面有k个或者后面有k个人,那么插入的位置,在他前面// 就是k,后面的这样计算,已经插入前i-1个人,则剩下n-(i-1)// 再-k,再减自己的位置.就是n-i-k.在前面预留n-i-k个位置// 因为求字典序最小,那么两者求一个min设为v就是啦.然后就原创 2015-09-28 22:52:43 · 506 阅读 · 0 评论 -
poj 2778 AC自动机 + 矩阵快速幂
// poj 2778 AC自动机 + 矩阵快速幂//// 题目链接:// // http://poj.org/problem?id=2778//// 解题思路://// 建立AC自动机,确定状态之间的关系,构造出,走一步// 能到达的状态矩阵,然后进行n次乘法,就可以得到状态间// 走n步的方法数.// 精髓:// 1):这个ac自动机有一些特别,根节点是为空串,原创 2015-08-06 20:39:03 · 875 阅读 · 0 评论 -
hdu 3966 最纯洁的树链剖分
// hdu 3966 最纯洁的树链剖分 // 题目意思就不多说啦。经典的树链剖分的裸题,看了// 好久好久,才把树链剖分的基本思想看了一遍,然后// 自己yy拉好重链,写了个挺丑的线段树。然后七搞八搞// 总算是搞出来啦,仔细想来,点还是很简单的,看着// 牛人的那篇经典的入门的讲解,很奇妙,强烈推荐哟// 好吧,我等菜鸟继续加油哟。顺带提一下,此题区间更新// 单点查询。原创 2015-09-07 23:30:03 · 667 阅读 · 0 评论 -
大视野 1588 Splay入门
// 大视野 1588 Splay入门//// 解题思路:// 其实也没啥好解释的.就是每次在当前序列中// 找与x的最靠近的值(一个比他大,一个比他小)然后// 这两者与x的差值的绝对值最小,依次累加,就是我们// 所要求最后的答案.主要是为了学习Splay这个模板// 然而我花了好几天的功夫,才能够把它默写下来.继续// 加油吧~~~更难的还在后面呢.FIGNTING!!!原创 2015-09-24 19:21:12 · 417 阅读 · 0 评论 -
CF #326 (Div. 2) E Duff in the Army
// CF #326 (Div. 2) E Duff in the Army//// 题目大意// 一棵n各节点树,有p个人分布在节点上,q个询问,每个询// 问求u到v路径上小于k的所有人的标号.//// 解题思路:// 函数式线段树,初始建立一颗1-P的线段树,然后将每个// 节点上的信息,按照dfs序列,维护到以该节点为根的函数式// 线段树.同样的我们的答案,只与r原创 2015-10-26 22:04:26 · 943 阅读 · 0 评论 -
poj 3667 Hotel 区间合并
// poj 3667 Hotel 区间合并//// 题目大意://// [1,N]区间内开始为空,有两种操作// 1) 1 a 找到长度为a的区间,并且尽量开头靠左,返回最左的位置// 并check in.// 2) 2 a b 将[a,b-1]区间check out.//// 解题思路://// 线段树-区间合并,对于每个节点记录三个值.// lsum表示该原创 2015-10-30 17:10:02 · 565 阅读 · 0 评论 -
poj 2104 简单归并树 + 二分
// 感悟: 做法如果看一下挑战,应该还是很简单的吧// 主要是刚开始看不习惯,线段树每一段表示一段序列// 刚好是归并排序的序列,然后二分计数。归并树build// 的时候多了个merge阶段,这段复杂度即为nlog(n),之// 后对数x进行二分查找log(n),目的是为了找出线段树// 中不小于x的数的数目,此阶段会对线段树log(n)个段// 进行每段二分log(n)。所以复...原创 2018-06-09 19:39:47 · 259 阅读 · 0 评论 -
poj 1741 Tree 点分治
// poj 1741 Tree 点分治// 题目链接:// http://poj.org/problem?id=1741// 题目大意:// 给定一棵N(1<=N<=10000)个结点的带权树,定义dist(u,v)为u,v两点间的最短路径长度,// 路径的长度定义为路径上所有边的权和。再给定一个K(1<=K<=1e9),如果对于不同的两个// 结点原创 2016-10-14 08:53:22 · 705 阅读 · 2 评论 -
Codeforces 444C DZY Loves Colors 线段树区间更新
// Codeforces 444C DZY Loves Colors 线段树区间更新// 题目链接:// http://codeforces.com/problemset/problem/444/C// 题目大意: // 有长度为n的数组,起始值A[i] = i,val[i] = 0现给两种操作// 1 left right x: //原创 2016-10-12 20:18:27 · 751 阅读 · 0 评论 -
hdu 5929 Basic Data Structure 模拟
// hdu 5929 Basic Data Structure 模拟// 题目链接:// http://acm.hdu.edu.cn/showproblem.php?pid=5929// 题目大意:// 有这样一个栈,栈中只放入0或者1,有四种操作// 1)PUSH 1 or 0// 2)POP: 弹出栈顶元素// 3)REVERSE: 将栈中原创 2016-10-10 19:27:46 · 809 阅读 · 0 评论 -
hdu 5875 Function 单调栈 + 暴力
// hdu 5875 Function 单调栈 + 暴力//// 题目链接://// http://acm.split.hdu.edu.cn/showproblem.php?pid=5875//// 题目大意://// 一数组,给定区间[l,r],求a[l] % a[l + 1] % ... % a[r]//// 解题思路:////原创 2016-09-11 15:53:52 · 1236 阅读 · 1 评论 -
Codeforces343 div2 题解
哎,太颓废了,差不多两个月没怎么写博客了今天来补了一下codeforces343 的 div2,说一说自己的感受吧前面两题就直接略过了.从C题开始C题是给长度为m的串,凑成长度为n的合法的串.注意到n-m <= 2000,相信大家都明白,这类题从dp角度就是经典的dp[i][j]长度为i,某两者之间的差值的方案数.这类的dp.转移起来也挺简单.考虑第i位是(或者)的情况.(,那么原创 2016-02-28 23:21:38 · 542 阅读 · 0 评论 -
hdu 5592 线段树 + 二分
// hdu 5592 线段树 + 二分 // 解题思路: // 设[1,n]区间逆序对数为f[i],p[i]为当前i位置的数字 // 则x = f[i]-f[i-1]就是[1,i]区间比p[i]大的数.则i - x就是 // 从[1,i]中这个数字排第几.二分这个数字得到答案为x,将x从 // 线段树中删除.单点更新,区间查询. // 提示:线段树中存的是[1,n]各个数字的出原创 2015-12-06 23:32:59 · 605 阅读 · 0 评论 -
poj 1182 食物链 - 并查集
// poj 1182 食物链-并查集//// 这题我重新看了一下,以前一直不已为意,觉得理解就差不多了// 现在发现,理解了,也不一定能够敲出来,哎,果然太久没做题了// 都生疏了,这道题,将每个生物分成3类,A,B,C.// 对于第一种操作,只要在合并之前检查一下是否合法,合法,则将// 该种生物的三类都合并// 对于第二种操作,同样,合并A与B,B与C,C与A//原创 2016-01-04 21:16:50 · 506 阅读 · 0 评论 -
hdu 4777 Rabbit Kingdom 区间覆盖
// hdu 4777 Rabbit Kingdom 区间覆盖//// 题目大意://// 给n个数,有q个区间查询,求出[L,R]区间内有多少个互质的数//// 解题思路://// 首先我们将问题转化,互质个数 = 总的个数 - 不互质的个数.// 对于每个数,我们求一个L[i],R[i]表示分别到左右最近的与i不互质的// 的数的位置.这个用扫描的方式,记录一下一个数因原创 2015-11-01 20:33:13 · 534 阅读 · 0 评论 -
hdu 1542 Atlantis 矩形面积并
// hdu 1542 Atlantis 矩形面积并//// 解题思路:// // 将矩形沿着x轴或者y轴切割.然后求和// 具体做法:// 将每个矩形看成是两条线段.将x方向// 坐标离散化.给每个线段一个值,下面线段// 为1,上面线段为-1.将这些线段映射到线段// 树上.具体做法是,只要保存线段的左端点就// 可以了.然后是线段树的基本操作了.更新成原创 2015-10-31 02:11:39 · 500 阅读 · 0 评论 -
poj 2763 Housewife Wind 边权的树链剖分
// poj 2763 Housewife Wind 边权的树链剖分// // 题目意思很清楚,关于边权的树链剖分,首先// 肯定是先把链剖分好啦,然后就是将边权转化// 成离根节点较远的点的权值即可.单点更新,// 区间求和,注意,莫要重复计算哟,这题还有需要// 研究的地方,继续加油吧~~~#include #include #include #include #defi原创 2015-09-08 17:33:39 · 626 阅读 · 0 评论 -
hdu3706 Second My Problem First 滑动窗口最小值 单调队列
// hdu3706 Second My Problem First 滑动窗口最小值 单调队列// 题目意思就不用说了吧,我还傻逼的一开始用了个快速幂,结果果断TLE// 唯一坑的就是开的数组是long long 的 时候MLE了。。。// 想了个强转,然后过了。。。太坑了。// 以后要掌握算内存的习惯,要不然交了MLE就哭都来不及了// 看了看网上的题解,单调队列开的只有10的6次原创 2015-07-24 11:13:07 · 1043 阅读 · 0 评论 -
hdu 2243 AC自动机 + 矩阵快速幂
// hdu 2243 AC自动机 + 矩阵快速幂//// 题目大意://// 给你一些短串,问在长度不超过k的任意串,包含至少一个这些短串的其中// 一个.问这样的串有多少个.//// 解题思路://// 首先, 包含和不包含是一种互斥关系,包含+不包含 = 全集u.全集的答案就是// 26 ^ 1 + 26 ^ 2 + .... + 26 ^ k.不包含的比较好求.构原创 2015-08-08 15:59:58 · 795 阅读 · 0 评论 -
hdu5033 Building 单调队列
// hdu5033 Building 单调队列//// 题目大意://// n栋大楼,有一个高度h和位置x,现在有一个人高度为0,有q个询问// 每个询问有一个位置x,求在位置x能看到天空的最大的角度。//// 解题思路://// 首先得想到将q个询问的位置作为一栋大楼放在整个大楼中考虑,这样// 问题就比较一致,也比较容易处理啦。原创 2015-07-27 17:52:13 · 907 阅读 · 0 评论 -
hdu3530 Subsequence 单调队列
// hdu3530 Subsequence 单调队列// 题目大意:找到一个最大的子串,使得子串区间内最大值和最小值的差// 在low和up范围内,串的规模10w。// 解题思路:// 单调队列,单调队列可以保留i位置之前的最大值和最小值的下标,有了这些// 则,每次我们比较两个队列的队头,看差值是否大于up,(因为它是到i位置最大//原创 2015-07-25 16:11:25 · 1300 阅读 · 1 评论 -
hdu2430 Beans 单调队列
// hdu2430 Beans 单调队列//// 题目意思:// 求一个sum%p<=k的max(sum/p)//// 结题报告:// 技巧,先求出前缀和,并记录前i项对p取余的值记为x,并记下位置pos// 按照先按x从小到大,如果x相同按pos从小到大排序。这样,问题就转换为// 求一个最小的pos使得pos到i的值最大。////原创 2015-07-25 17:38:26 · 1072 阅读 · 0 评论 -
poj 2559 Largest Rectangle in a Histogram 栈
// poj 2559 Largest Rectangle in a Histogram 栈// // n个矩形排在一块,不同的高度,让你求最大的矩形的面积(矩形紧挨在一起)//// 这道题用的是数据结构做,也可以递推做,目前只会数据结构的//// 对于每个高度h,求一个左边界L和右边界R,分别表示的意义是// L是下标为j的矩形的高度的hj小于当前h的最大的j的值。则根据定义/...原创 2015-06-05 22:53:39 · 815 阅读 · 0 评论 -
hdu 2795 Billboard 线段树 点更新
// hdu 2795 Billboard 线段树 点更新//// 首先n最多是200000种,也就是说最多200000行,// 我们的线段树的区间保存的是L到R中最大的叶子节点的值// 初始情况下都是板子的宽度。这样,每次放一块广告的时候// 看1到h中最左边的叶子区间是什么就ok了,还是很好理解的//// 做题的感悟,这道题其实是去年暑假集训的时候做的,当时// 并不会,只会敲原创 2015-06-05 21:28:12 · 871 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number 线段树 点更新
// hdu 1394 Minimum Inversion Number 线段树 点更新//// 典型线段树的单点更新//// 对于求逆序数,刚开始还真的是很年轻啊,裸的按照冒泡排序// 求出最初始的逆序数,然后按照公式递推,结果就呵呵了//// 发现大牛都是用线段树和树状数组之类的做的,而自己又在学// 线段树,所以就敲了线段树。//// 线段树的节点保存一段区间( L,R原创 2015-06-03 20:33:01 · 755 阅读 · 0 评论 -
hdu 1754 I Hate It 线段树 点修改
// hdu 1754 I Hate It 线段树 点修改//// 不多说,裸的点修改//// 继续练#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2015-06-02 22:14:12 · 831 阅读 · 0 评论 -
hdu 1166 敌兵布阵 线段树 点更新
// hdu 1166 敌兵布阵 线段树 点更新//// 这道题裸的线段树的点更新,直接写就可以了//// 一直以来想要进线段树的坑,结果一直没有跳进去,今天算是跳进去吧,// 虽然十分简单,十分的水,继续加油#include #include #include #include #include #include #include #include #include原创 2015-06-02 21:33:16 · 822 阅读 · 0 评论 -
la 3135 Argus Data Structure
// la 3135 Argus// 学习一下优先队列的使用吧,题目还是比较简单的// 刘老师的训练指南p188。// 继续练吧。。。。#include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2015-05-17 11:58:13 · 752 阅读 · 0 评论 -
uva 11991 Easy Problem from Rujia Liu? Data Structure
// uva 11991 Easy Problem from Rujia Liu?// 给一个包含n个数的数组,需要回答若干个询问,每次询问两个整数// k和v,输出从左到右第k个v的下标//// 本题因为n比较大,所以直接开二维数组是不现实的// 如果直接用vector的话,也是会有大量的浪费// 所以可以先离散化一下,找到一共有多少个不同的数// 再用vector动态数组就可以搞原创 2015-05-17 11:11:16 · 842 阅读 · 0 评论 -
poj 2774 Long Long Message 后缀数组
// poj 2774 Long Long Message 后缀数组//// 题目大意:// // 求两个串的最长公共子串.//// 解题思路://// 后缀数组.将两个字符串用一个不出现在两个字符串的其他字符连接,并在最后// 同样用一个字符作为结束.一个串的子串,一定是某个后缀的前缀.求出height数组// height[i]表示sa[i-1]和sa[i]的公共前缀L原创 2015-08-10 15:39:43 · 728 阅读 · 0 评论 -
hdu 1671 Phone List 字典树
// hdu 1671 Phone List 字典树//// 题目大意://// 有一些电话号码的字符串长度最多是10,问是否存在字符串是其他字符串的前缀////// 解题思路://// 字典树,先插入第一个字符串,然后按照查询,插入的方式进行访问,发现了之后// 就不用再进行字典树的操作了////// 感悟://// 题目意思很清楚,我在细节方面思考了很久,原创 2015-08-01 12:15:59 · 777 阅读 · 0 评论
分享