[BZOJ3545] [ONTAK2010]Peaks(线段树合并 + 离散化)传送门
由于困难值小于等于x这个很恶心,可以离线处理,将边权,和询问时的x排序。
每到一个询问的时候,将边权小于等于x的都合并起来再询问。
。。
有重复元素的线段树合并的时
[luoguP3608] [USACO17JAN]Balanced Photo平衡的照片(树状数组 + 离散化)传送门
树状数组裸题
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define N 100001
using namespace std;
int n, m, ans;
int
[POJ1733]Parity game(并查集 + 离散化)传送门
题意:有一个长度已知的01串,给出[l,r]这个区间中的1是奇数个还是偶数个,给出一系列语句问前几个是正确的
思路:如果我们知道[1,2][3,4][5,6]区间的信息,我们可以求出[1,
[BZOJ3932] [CQOI2015]任务查询系统(主席树 || 树状数组 套 主席树 + 差分 + 离散化)传送门
看到这个题有个很暴力的想法,
可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个。
当 x 到 y 有个优先级为 k 的任务时,循环 x 到
[luoguP1970] 花匠(DP)传送门
n2过不了惨啊
70分做法
f[i][0] 表示第 i 个作为高的,的最优解
f[i][0] 表示第 i 个作为低的,的最优解
(且第 i 个一定选)
那么
f[i+1][1]=max(f[j][0])+1,i>=j>=1,h[j
[luoguP3402] 最长公共子序列(DP + 离散化 + 树状数组)传送门
比P1439排列LCS问题,难那么一点点,只不过有的元素不是两个串都有,还有数据范围变大,树状数组得打离散化。
不过如果用栈+二分的话还是一样的。
——代码
1 #includ
[luoguP2617] Dynamic Ranking(树状数组 套 主席树 + 离散化)传送门
BZOJ上是权限题,洛谷赞啊。
求区间 K 大数很简单。
但是如果修改某个数的话,那么就得把这个数及后面所建的主席树都更新一遍 nlogn,显然不行。
所以可以在外面套一个
[luoguP1168]中位数(主席树+离散化)传送门
模板题一道,1A。
——代码
1 #include <cstdio>
2 #include <algorithm>
3 #define ls son[now][0], l, mid
4 #define rs son[now][1], mid + 1, r
5
6 us
[HDU4417]Super Mario(主席树+离散化)传送门
又是一道主席树模板题,注意数组从0开始,还有主席树耗费空间很大,数组开大点,之前开小了莫名其妙TLE。QAQ
——代码
1 #include <cstdio>
2 #include <cstring>
3 #
【模板】主席树的学习Kth number
划分树虽然可以做,但是代码不好记。
看某人blog学习了主席树的简单操作。
引用某大牛的话来解释一下主席树:
所谓主席树呢,就是对原来的数列[1..n]的每一个前缀[1
第k小整数(树状数组)洛谷传送门
入门难度。。
没错,但是我并不是要暴力做。
而是用树状数组来做。
先离散化,然后随便搞一搞就可以了。(晕。比暴力还慢)
如果要查找某一区间的的话可以把区间取出重
求逆序对(树状数组)洛谷传送门
虽然可以用归并排序求,但我实在记不住归并排序的代码。
还是树状数组和蔼点。
先离散化,树状数组就可以开小点,不过耗的时间多点。
——代码
1 #include <cstdi









