随笔分类 -  划分树

摘要:思路:裸的划分树#include#include#include#include#include#define Maxn 100010#define lson(x) x>1; }}tree[Maxn*4];void BuildTree(int l,int r,int dep,int po){ tree[po].l=l,tree[po].r=r; if(l==r) return ; int mid=tree[po].mid(); int lpos=l,rpos=mid+1; int same=mid-l+1,i; for(i=l;isort... 阅读全文
posted @ 2013-08-12 11:24 fangguo 阅读(148) 评论(0) 推荐(0)
摘要:思路:裸的划分树#include#include#include#include#include#define Maxn 100010#define lson(x) x>1)using namespace std;int val[20][Maxn],toLeft[20][Maxn],sorted[Maxn];struct Tree{ int l,r;}tree[Maxn*4];void BuildTree(int l,int r,int dep,int po){ tree[po].l=l,tree[po].r=r; if(l==r) return ; in... 阅读全文
posted @ 2013-08-09 16:03 fangguo 阅读(126) 评论(0) 推荐(0)
摘要:思路:裸的划分树#include#include#include#include#include#include#define Maxn 100010#define inf 0x7fffffff#define lson(x) (x>1)using namespace std;struct Tree{ int l,r;}tree[Maxn*4];int sorted[Maxn];int val[20][Maxn],toLeft[20][Maxn];void BuildTree(int l,int r,int dep,int po){ tree[po].l=l,tree[po].r=r... 阅读全文
posted @ 2013-08-09 15:52 fangguo 阅读(195) 评论(0) 推荐(0)
摘要:思路:用Sum[dep][i]记录从tree[po].l到i中进入左子树的和。#include#include#include#include#include#include#define Maxn 100010#define inf 0x7fffffff#define lowbit(x) (x&(-x))#define lson(x) (x>1)using namespace std;struct Tree{ int l,r;}tree[Maxn*4];__int64 Sum[20][Maxn],sum[Maxn];__int64 lnum,lsum;int sorted[Ma 阅读全文
posted @ 2013-08-09 15:51 fangguo 阅读(149) 评论(0) 推荐(0)
摘要:思路:二分枚举区间第k大。用划分树查找是否符合要求的高度。#include#include#include#include#include#define Maxn 100010#define lson(x) x>1)using namespace std;int val[20][Maxn],toLeft[20][Maxn],sorted[Maxn];struct Tree{ int l,r;}tree[Maxn*4];void BuildTree(int l,int r,int dep,int po){ tree[po].l=l,tree[po].r=r; if(l==r) ... 阅读全文
posted @ 2013-08-09 15:48 fangguo 阅读(136) 评论(0) 推荐(0)