随笔分类 -  数据结构

摘要:势能线段树/吉司机线段树 "BZOJ3211 花神游历各国" "BZOJ5312 冒险" "BZOJ4355 Play with sequence" "BZOJ4695 最假女选手" $A_i = max(A_i, x)$ 这种操作的 tag 不需要实际记录下来, 就行了。 修改 的时候需要特判区间 阅读全文
posted @ 2019-01-08 18:02 derchg 阅读(1252) 评论(0) 推荐(0)
摘要:线段树空间 下面“空间”是指实际维护的区间长度所占空间 指针版动态开点由于 C++ 里 struct 的“对齐”操作,会额外占用内存。所以内存非常紧张的时候还是必须牺牲一点效率写数组版动态开点。 zkw 线段树由于必须是一颗有 $2^k$ 个叶节点的满二叉树,所以需要 4 倍空间 。 普通线段树需要 阅读全文
posted @ 2018-08-29 11:58 derchg 阅读(390) 评论(0) 推荐(0)
摘要:LCT 模板题,分块也很优秀。 分块做法 维护每个点到第一次跳到下一个块时的跳跃次数,并记录其跳到下一个块的第一个点。 注意常见的分块玄学操作 n = min(sqrt(N), 100) 和 n = sqrt(N)*1.23 。 1 #include <stdio.h> 2 #include <al 阅读全文
posted @ 2018-07-12 09:45 derchg 阅读(137) 评论(0) 推荐(0)
摘要:分块思想,机智的建图。 1.n = min(sqrt(N), 100) ……设一个玄学限制,跑得会快很多。 2.SPFA 不要加 LLL 也不要加 SLF 优化!千万不要加!不然九十八! 我写了发 SPFA ,时间略卡。可能 Dijkstra 在这道题会更优秀一些吧…… 1 #include <st 阅读全文
posted @ 2018-07-11 15:07 derchg 阅读(140) 评论(0) 推荐(0)
摘要:敲了一个树剖模板,顺便复习了一下动态开点的线段树. NKOJ需要扩栈! 题目 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个 阅读全文
posted @ 2018-04-18 19:16 derchg 阅读(141) 评论(0) 推荐(0)
摘要:NKOJ2645 第一次做这种儿子并不一定直接继承父亲节点 lazy ,而要分类讨论的线段树题。学习学习。 1 #include <stdio.h> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int _N = 800000; 阅读全文
posted @ 2018-01-16 13:25 derchg 阅读(158) 评论(0) 推荐(0)
摘要:题目 给你一个长度为n的数列,元素编号1到n,第i个元素值为Ai。现在有m个形如(L,R)的提问,你需要回答出区间[L,R]的mex值。即求出区间[L,R]中没有出现过的最小的非负整数。 详细见NKOJ4254 总结一下这道题的三种解法 1.莫队分块,参考 NewUser 代码,非常暴力 另两种需要 阅读全文
posted @ 2018-01-08 18:52 derchg 阅读(844) 评论(1) 推荐(0)
摘要:1 #include <stdio.h> 2 #include <algorithm> 3 4 using namespace std; 5 6 const int _N = 550000; 7 const int INF = 1e9; 8 9 int A[_N]; 10 int n, m; 11 阅读全文
posted @ 2018-01-07 11:33 derchg 阅读(152) 评论(0) 推荐(0)
摘要:结构体 node 中 l 表示左界,r 表示右界, cons_l 从左开始最大连续1, cons_r ...,max 区间最大连续1 代码 1 #include <stdio.h> 2 #include <queue> 3 #include <algorithm> 4 5 using namespa 阅读全文
posted @ 2018-01-04 16:27 derchg 阅读(344) 评论(0) 推荐(0)
摘要:不考虑负数情况。还包含了高精度和 int 类型的乘除运算。 阅读全文
posted @ 2017-11-27 18:33 derchg 阅读(312) 评论(0) 推荐(0)
摘要:【NOIP2013普及组P2】表达式求值 Time Limit:10000MS Memory Limit:128000K Total Submit:37 Accepted:19 Case Time Limit:1000MS Description 给定一个只包含加法和乘法的算术表达式,请你编程计算表 阅读全文
posted @ 2016-04-30 12:17 derchg 阅读(601) 评论(0) 推荐(0)