|
随笔分类 -
线段树
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4217View Code #include<stdio.h>struct data{ int l,r; int sum;}node[1962144];void build(int ll,int rr,int n){ node[n].l=ll; node[n].r=rr; node[n].sum=rr-ll+1; if(ll==rr)return ; int mid=(ll+rr)>>1; build(ll,mid,n+n); build(mid+1,rr,...
阅读全文
摘要:有N个人要去膜拜JZ,他们不知道JZ会出现在哪里,因此每个人有一个活动范围,只要JZ出现在这个范围内就能被膜拜,伟大的JZ当然希望膜拜他的人越多越好,但是JZ不能分身,因此只能选择一个位置出现,他最多可以被多少人膜拜呢,这个简单的问题JZ当然交给你了A_i..B_i (1 <=A_i <= B_i <= 1,000,000,000)N (1 <= N <= 50,000)44 81 25 103 5输出3思路:考虑到a,b的范围很大,N范围小,果断离散化一下,离散化以后,如果直接 add[] 暴力统计区间,会超时,考虑线段树,使用懒惰标记 500msView Co
阅读全文
摘要:题目种涉及到区间的查询,想到线段树View Code #include<stdio.h>int tmin=10000009,tmax=0;struct data{ int l,r; int min,max;}node[9950009];int fmax(int a,int b){ return a>b?a:b;}int fmin(int a,int b){ return a<b?a:b;}void build(int ll,int rr,int n){ node[n].l=ll; node[n].r=rr; node[n].max=-1; node[n].min=100
阅读全文
摘要:前面一直TLE,最终原因是因为没有将查找的压倒O(log(N))查找更新都需要遗传结构!!!View Code #include<stdio.h>structdata{intl,r;__int64all;//开始单点更新__int64hou;}node[300009];inta[100009];voidbuild(intll,intrr,intn){node[n].l=ll;node[n].r=rr;node[n].hou=0;if(ll==rr){node[n].all=a[rr];}if(ll==rr)return;intmid=(ll+rr)>>1;build(l
阅读全文
摘要:在单纯的更新结点时,是不需要用到遗传结构的在区间的更新时,会用到遗传结构View Code #include<stdio.h>#include<string.h>struct data{int l,r,val;}st[200009];void build(int ll,int rr,int n){st[n].l=ll;st[n].r=rr;st[n].val=0;if (ll==rr) return ;int mid=(ll+rr)/2;build(ll,mid,2*n);build(mid+1,rr,2*n+1);}void updata(int ll,int rr,
阅读全文
摘要:统计一定区间内颜色的不同种数开个hash,在search随时记录颜色数目做完这题:对线段树有了理解更新操作时,线段树用遗传的方法,在一个区间异化时,将有用信息遗传到子代(仅仅是子代,不是所有的子孙都遗传,这样就节约了时间)统计操作时,线段树用了区间统计(不是统计每个叶子),统计未被异化的区间(不是所有子孙都统计,又节约时间了)对于函数参数的理解:当传入的是结点下标n时,函数里考虑n+n,n+n+1的子树而不仅传入有下标,还有区间时,就要分区间是在当前树的左子树,或是右子树,或是区间同时在左右子树View Code #include<stdio.h>struct data{ int
阅读全文
摘要:超时是因为底层结点也更新了,背离了区间更新的大原则,所以超时View Code #include<stdio.h>struct data{ int l,r,val;}st[300009];inline int max(int a,int b){ return a>b?a:b;}void build(int ll,int rr,int n)//½¨Ê÷{ st[n].l=ll; st[n].r=rr; st[n].val=1; if (ll==rr) return ; int mid=(ll+rr)/2; build(ll,mid,2*n
阅读全文
|