随笔分类 -  数据结构

摘要:首先确定的基本思想是按时间离散化后来建线段树,对于每个操作插入到相应的时间点上但是难就难在那个pop操作,我之前对pop操作的处理是找到离他最近的那个点删掉,但是这样对于后面的peak操作,如果时间戳还在pop前面,那就需要还原之前的pop操作,这弄得很不方便于是就有了一种类似扫描线的做法,对于pu... 阅读全文
posted @ 2014-09-09 17:11 KRisen 阅读(196) 评论(0) 推荐(0)
摘要:发现最近碰到好多次二分结果的题目,上次多校也是,被我很机智的快速过了,这个思想确实非常不错。在正面求比较难处理的时候,二分结果再判断是否有效往往柳暗花明。这个题目给定n个数字的序列,可以操作m次,每次要操作w个连续的数字,每次的操作将使得该段连续数字的数都+1,最后求整个序列最小值的最大值求最小值最... 阅读全文
posted @ 2014-08-24 17:23 KRisen 阅读(408) 评论(0) 推荐(0)
摘要:终于是解决了这个题目了不过不知道下一次碰到主席树到底做不做的出来,这个东西稍微难一点就不一定能做得出离散化+扫描线式的建树,所以对于某个坐标二分找到对应的那颗主席树,即搜索出结果即可(因为是扫描线式的建树,找到对应的树之后,就知道该点上面的线段有多少条了)其他就是普通主席树的操作了主席树里面维护两个... 阅读全文
posted @ 2014-08-10 15:30 KRisen 阅读(407) 评论(0) 推荐(0)
摘要:给定n个数第一个操作和普通,区间覆盖性的,把l-r区间的所有值改成固定的val第二个操作是重点,输入l r x 把l-r区间的所有大于x的数,变成gcd(a[i],x) a[i]即指满足条件的序列上的数值最后才输出所有值当时苦思这个地方如何优化,想着不可能单点去更新吧,但是区间gcd,不能保存下来,... 阅读全文
posted @ 2014-07-31 23:22 KRisen 阅读(328) 评论(0) 推荐(0)
摘要:现在把主席树的原理给弄清楚了,从i=1开始,每次新插入一个数,就为他建一棵线段树(当然第一次i=0的时候是建一棵空树),线段树里面保存的是1-i的树的位置情况简单来说,如果有m个树,则每棵线段树都是范围为1-m的,至于1-i没有m个那就先让它空着不管,我只负责1-i里面的数的位置情况插入到线段树里面... 阅读全文
posted @ 2014-07-31 17:39 KRisen 阅读(283) 评论(0) 推荐(0)
摘要:本来是想找个主席树的题目来练一下的,这个题目虽说可以用主席树做,但是用这个方法感觉更加叼炸天第一次做这种离线方法,所谓离线,就在把所有询问先存贮起来,预处理之后再一个一个操作像这个题目,每个操作要求区间不同元素的个数,我盲目去查的话,某个元素在之前如果出现了,我把他算在当前区间也不好,算在之前的区间... 阅读全文
posted @ 2014-07-30 23:11 KRisen 阅读(1273) 评论(0) 推荐(0)
摘要:给定一个初始都为0的序列,有三种操作,前两种比较正常,一个是对某个位置的数add k,另一个是query区间和。然后比较麻烦的是第三个操作,把某个区间里面的每个值改成离它最近的Fibonacci数,如果存在左右两个离它近的,优先取左边数值小的一看到前两个操作马上就想上手敲树状数组,后来看到第三个就有... 阅读全文
posted @ 2014-07-29 23:04 KRisen 阅读(415) 评论(0) 推荐(0)
摘要:给定一个n的序列,有m个询问 每次询问求l-r 里面第k大的数字是什么只有询问,没有修改可以用归并树和划分树(我都没学过。。囧)我是专门冲着弄主席树来的对主席树的建树方式有点了解了,不过这题为什么是在主席树里面这么操作的 还是有点不懂,今天照着模板敲了一遍就打多校了再研究吧#include #inc... 阅读全文
posted @ 2014-07-29 22:53 KRisen 阅读(215) 评论(0) 推荐(0)
摘要:求n个图矩形放下来,有的重合有些重合一部分有些没重合,求最后总的不规则图型的轮廓长度。我的做法是对x进行一遍扫描线,再对y做一遍同样的扫描线,相加即可。因为最后的轮廓必定是由不重合的线段长度组成的,这样理论上是对的要注意处理高度相同的线段,把底边优先处理(在代码里就是f标记为1的线段),因为若是一个... 阅读全文
posted @ 2014-07-28 13:33 KRisen 阅读(276) 评论(0) 推荐(0)
摘要:也是很久之前的题目,一直没做做完之后觉得基本的离散化和扫描线还是不难的,由于本题要离散x点的坐标,最后要计算被覆盖的x轴上的长度,所以不能用普通的建树法,建树建到r-l==1的时候就停止,表示某段而不是某点,同样,左子树和右子树要变成 L MID , MID R比如1-4子树就是 1-2,2-4。。... 阅读全文
posted @ 2014-07-27 11:06 KRisen 阅读(157) 评论(0) 推荐(0)
摘要:这个是去年遗留历史问题,之前思路混乱,搞了好多发都是WA,就没做了自从上次做了大白书上那个双重懒惰标记的题目,做这个就思路很清晰了跟上次大白上那个差不多,这个也是有一个sets标记,代表这个区间全部置为0或者1,没有置位的时候为-1还有个rev标记,代表翻转操作,0代表当前不翻,1代表当前翻要注意一... 阅读全文
posted @ 2014-07-23 23:44 KRisen 阅读(516) 评论(0) 推荐(0)
摘要:本来是想找一个二维线段树涉及懒惰标记的,一看这个题,区间修改,单点查询,以为是懒惰标记,敲到一半发现这二维线段树就不适合懒惰标记,你更新了某段的某列,但其实其他段的相应列也要打标记,但因为区间不一样,又不好打。。。也可能是我这是在套用一维线段树的思想,还有更好的二维线段树懒惰标记方法反正到现在我还没... 阅读全文
posted @ 2014-07-23 23:10 KRisen 阅读(519) 评论(3) 推荐(0)
摘要:13年长春现场赛的G题,赤裸裸的二维线段树,单点更新,区间查询不过我是第一次写二维的,一开始写T了,原因是我没有好好利用行段,说白一点,还是相当于枚举行,然后对列进行线段树,那要你写二维线段树干嘛二维就是在每个行段也建一棵树,来代表这个区间的行里的某些列的值其他操作倒是不难,因为有一维的功底,只是多... 阅读全文
posted @ 2014-07-23 00:09 KRisen 阅读(256) 评论(0) 推荐(0)
摘要:先输入n个字符串的字典,每个字符串的前缀+后缀可以组成新的合法字符串,但肯定是有重复的,问从给定的字符串,生成的所有可能的字符串为多少个把前缀和后缀压入字典树,达到前缀和后缀的去重,首先的总和即为前缀数目乘以后缀数目,之后为了去重,记录每个前后缀非第一个相同的每个字母,则每个相同字母必定会产生重复。... 阅读全文
posted @ 2014-07-19 21:00 KRisen 阅读(229) 评论(0) 推荐(0)
摘要:这题真是坑啊,题意不明,其实就是往桟里面压入空的set集合,所以之前的询问大小都是只有0,只有add的时候,才会产生新的占空间的集合用stack和set直接进行模拟#include #include #include #include #include #include using namespac... 阅读全文
posted @ 2014-07-17 21:59 KRisen 阅读(249) 评论(0) 推荐(0)
摘要:这个题意搞了半天才搞明白 就是如果定义一个d-summit,即从该点到另一个更高的点,经过的路径必定是比当前点低至少d高度的,如果该点是最高点,没有比他更高的,就直接视为顶点 其实就是个BFS染色,先按降序排序,然后每个点对其可到达的点染色,h-d的点为边界,走到这里就不用往下染了 然后其他店染色的... 阅读全文
posted @ 2014-07-17 21:57 KRisen 阅读(475) 评论(0) 推荐(0)
摘要:给定N个点的坐标,代表N各城市,有M种操作,共分两种,一种是连线,把两个点连起来(一旦构成连通图,这个连通图即为一个州),还有种询问操作,为y=c,(c为小数部分恒为.5的实数),问y=c这条线经过了多少个大周,这些州总共有多少个城市很明显要用到并查集,比较好的做法是把并查集落实到线段树上,并查集维... 阅读全文
posted @ 2014-07-16 14:12 KRisen 阅读(410) 评论(0) 推荐(0)
摘要:我们知道1——k有K!种排列,现在给定k和n,要你按字典序输出 第n种排列的数列而且题目给的 n是 n=S1(k-1)!+S2(k-2)!+...+Sk-1*1!+Sk*0!(0=#include #include #include #define N 50000+10using namespace... 阅读全文
posted @ 2014-07-15 20:51 KRisen 阅读(535) 评论(0) 推荐(0)
摘要:聪哥推荐的题目区间修改和区间查询,但是此题新颖之处就在于他的区间修改不是个定值,而是从L 到 R 分别加 F1、F2、。。。Fr-l+1 (F为斐波那契数列)想了一下之后,觉得用fib的前缀和来解决,每次做懒惰标记记录下当前区间是从哪个L开始加起的,敲了一半之后发现有问题,就跟上次遇到的懒惰标记问题... 阅读全文
posted @ 2014-07-15 20:40 KRisen 阅读(497) 评论(0) 推荐(1)
摘要:前天晚上的CF比赛div2的E题,很明显一个线段树,当时还在犹豫复杂度的问题,因为他是区间修改和区间查询,肯定是要用到懒惰标记。然后昨天真的是给这道题跪了,写了好久好久,。。。我本来是写了个add标记作为累加用,因为这个题目很明显是累加型的懒惰标记,但是后来不知道脑子怎么想的,又把add标记给删了,... 阅读全文
posted @ 2014-07-08 11:13 KRisen 阅读(554) 评论(0) 推荐(0)