线段树
scutzyz126
这个作者很懒,什么都没留下…
展开
-
HDU1394 Minimum Inversion Number(线段树单点更新)
注意:给定的数据是0到n-1的一个排列。如果是任意数据则程序出错。/*hdu 1394 Minimum Inversion Number(线段树单点更新) 题目大意: 给定一组数,不停的将数列的第一个数放在数列的最后, 形成一个新的数列,找出所有数列中逆序数最小是多少注意:此组数据是从0-n-1!不是随机数据! 思路: 只需要求出原始数列的逆序数即可,转化后的数列的逆序数 可以通过原原创 2017-08-30 11:18:06 · 186 阅读 · 0 评论 -
HDU1828矩形周长合并(线段树+离散)
和面积合并类似,只不过要多记录有多少个不连续的线段。如总长为4,可能是1-2,3-4两段,也可能是1-4一段,计算面积是一样但计算周长就不一样了。#include <stdio.h> #include <string.h> #include <algorithm> using namespace std;const int N = 5e3+5;#define lson u<<1 #define rs原创 2017-08-31 09:13:32 · 383 阅读 · 0 评论 -
HDU1542 POJ1151矩形面积合并(线段树+离散化)
参考程序#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<iomanip> #define INF 99999999 using namespace std原创 2017-08-30 20:46:27 · 234 阅读 · 0 评论 -
HDU2665 POJ2104 K-th Number(主席树)
给出一串长度为n的序列,并给出m个询问,每个询问针对序列中一段区间[s,t],求这区间中第k小的数字是多少。 #include using namespace std; const int MAXN = 1e5 + 10; struct node { int ls, rs, sum; } ns[MAXN * 20]; int ct; int rt[MAXN * 20];原创 2017-09-02 11:39:39 · 173 阅读 · 0 评论 -
ZOJ2112 Dynamic Ranking (主席树+树状数组)
给定一序列,动态修改某个数,查询某区间第k大的数。 /*给定n个数,可以动态修改某个数,随时查询某个区间第k大的值。 http://blog.csdn.net/regina8023/article/details/41911837 树状数组套主席树。 */ #include #include #include #include #include #include #defi原创 2017-09-02 20:08:51 · 208 阅读 · 0 评论 -
HDU3308线段树区间合并
HDU3308 线段树好题 #include #include #include #include #define lson l,mid,rt<<1 #define rson mid+1,r,rt<<1|1 using namespace std; const int maxn=100005; int num[maxn]; int msum[maxn<<2]; int l原创 2017-10-07 09:46:33 · 172 阅读 · 0 评论