线段树
傻蛋的阿简
我,会骗人的江湖骗子
展开
-
HDU 1754 线段树入门
1.做的第一道线段树的题,纯套模板,单点修改线段树,没什么要注意的点。//裸 线段树的建立 线段树的更新 线段树的查找//采用数组建树的方法#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn=200000;int inte...原创 2018-07-25 19:12:08 · 381 阅读 · 0 评论 -
POJ 2299 树状数组入门 离散化入门
思路见注释,套两个模板就好,没什么技巧//理解了快速排序的时间复杂度 不难发现这道题是一个//纯树状数组 + 逆序对 直接套模板就好了//树状数组每个结点存放的是小于等于该结点的value//逆序对公式:逆序对=大于该value的个数//因为树状数组的n取决于序列的最大值//所以套个离散化模板就好了//离散化模板为不重复模板//lowbit的含义是计算二进制数中从右数第一个1...原创 2018-07-25 21:16:47 · 159 阅读 · 0 评论 -
POJ 2825
//区间染色+特殊离散化处理//用lazy线段树存染色区域//一直WA 不知道哪里错了 改到凌晨1点半 懒得改了 等将来填坑吧#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>using namespace std;const int maxn...原创 2018-07-26 01:23:26 · 217 阅读 · 0 评论 -
CodeForce 527C 非递归线段树 连续区间
#include<iostream>#include<cstdio>using namespace std;const int maxn=200010;int lsum[maxn<<2][2];//从左开始连续0的个数int rsum[maxn<<2][2];//从右开始连续0的个数int sum[maxn<<2][2];/...原创 2018-07-27 13:14:57 · 200 阅读 · 0 评论 -
HDU 1540 线段树 连续区间
递归写法:(这道题应该还有非递归写法,以后再填坑)#include<iostream>#include<cstring>#include<cstdio>#include<stack>using namespace std;const int maxn=50010;int lsum[maxn<<2],rsum[maxn&...原创 2018-07-27 15:30:04 · 142 阅读 · 0 评论 -
HDU 1349 逆序对 数论 暴力 线段树 树状数组 单点更新 区间求和
传送门:题目题意:给一个序列(n个数,[0,n-1]每个数无重复),求该序列的逆序数,逆序对-维基百科,然后序列可以做如下操作:序列的第一个值移到序列的结尾,剩下的每个值向前推进一位。 求操作n-1次后,原有的加生成的,总共n种字符串中,逆序对的最小值。暴力+数论:题目很好理解,先看一个暴力解法,我们用两个for循环求出初始串的逆序对Cnt。 然后我们把第一个数字移到最后面,不...原创 2018-08-21 19:59:38 · 236 阅读 · 0 评论 -
HDU 1166 线段树 单点更新 区间查询
传送门:题目题意:n个营地,告诉你初始时每个营地的人数,之后的操作有三种:某个营地增加人数某个营地减少人数查询营地[i,j]的人数总和。题解:典型的线段树单点更新,区间查询。AC代码:#include<iostream>#include<cstdio>#include<cstring>using namespace ...原创 2018-08-21 20:21:54 · 204 阅读 · 0 评论