摘要:
树状数组 它能干的线段树都可(好像它最基本也就支持单点修改,区间求和——前缀和相减)。。。优点是码量very小 inline void update(int x,int v){ for(;x<=n;x+=x&(-x)) c[x]+=v; } inline int query(int x){ int 阅读全文
摘要:
权值线段树 ——维护某个区间内数组元素出现的次数 权值线段树会采用离散化或动态开点的策略优化空间。单次操作时间复杂度O(logn) 权值线段树和简单线段树的区别 权值线段树维护的是桶,按值域开空间,维护的是个数。 简单线段树维护的是信息,按个数可开空间,维护的是特定信息。 板子——额可打平衡树板子h 阅读全文
摘要:
7.15 dp专题 T1.sum小Z爱求和 无脑暴力骗20... 正解 \(n^2\) 个元素,挨个统计是 O(\(n^2\)) ,所以统计每个点的贡献 复杂度降到O(n) 对于每个点,他可能贡献的区间是 L= pre(k-1) 前跳 k-1 个前驱 R=nxt ———— L=pre R=nxt(k 阅读全文
摘要:
7.13模拟赛 T1 sign 签到题。。。 只会暴力dfs...本能骗到70分 出题人血坑。。。 先读入边权 最后惨遭爆零 先附上70代码 #include <iostream> #include <cstdio> #include <algorithm> #include <vector> #i 阅读全文
摘要:
7.7 积木 Description ⼩XX 感到很⽆聊,从柜⼦⾥翻出了⾃⼰⼩时候玩的积⽊。 这套积⽊⼀共有nn 块,每块积⽊都是⼀个长⽅体。⼩XX 想⽤这些积⽊拼成⼀个积⽊塔(不必每⼀块积⽊都使⽤)。 所谓积⽊塔,就是将积⽊⼀个⼀个摞起来,(除去最底层的积⽊外)每块积⽊的底⾯必须能被它下⾯的积⽊的 阅读全文
摘要:
7.6 Binary Description Solution 遇到位运算直接拆位。 都拆了的话二进制 + 操作不好处理,所以只拆y 对于每个二进制位单独考虑,且y这一位为1才考虑。 不考虑+x时,我们还可以弄一棵权值线段树,那么cnt[i]所包含的数就是这样的:比i高的位任意,i位以内满足 阅读全文
摘要:
SPOJ GSS - Can you answer these queries系列 GSS1查询 区间最大子段和 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std 阅读全文
摘要:
扫描线 参考博客 注解1:横着的扫描线,我们把矩形拆成上下两条线段,下面那条 k=1,上面的k= -1; h 就是到x轴的距离;val[ ]是线段长度 记得离散化 (代码里的 x[] ) #include <iostream> #include <cstdio> #include <algorith 阅读全文