随笔分类 - 线段树
摘要:数据太弱,直接让我小暴力一下就过了,一开始没注意到时间是15000MS,队友发现真是太给力了#include #include int n,q,a[100005],x[100005],p,l[100005],r[100005],t[100005];int tree[1000005];void bui...
阅读全文
摘要:比赛时太大意,斐波拉契数列开小了。题目大意:1个序列,3种操作,改变序列某个数大小,将序列中连续的一段每个数都变成其最近的斐波拉契数,以及查询序列中某一段的数之和。解题思路:维护add[]数组表示线段树中每一段的需要改变到斐波拉契数的总和即可,color[]表示该段是否需要改变成斐波拉契,而当需要改...
阅读全文
摘要:细节处理实在太重要了。#include#include#define MT 65533*4#define Maxn MT*4int i,x,y,now,k;int xo[Maxn],e[Maxn],pd[MT];char a,b,c;inline void work(int k,int rt){ ...
阅读全文
摘要:首先应该对该【0,10000000】进行离散化即先将点集进行排序,然后从小到大缩小其中的间距,使得最后点数不会超过2*n然后就是线段树操作只需进行染色,然后最后用nlgn进行一个个查询颜色记录即可#include#includeint color[20005*4],a[20005],p[20005]...
阅读全文
摘要:#includeint lb,rb,data;long long sum[5000000],extra[5000000];void add(int l,int r,int now){ if(lb=r){ extra[now]+=data; sum[now]+=data*(r-l+1)...
阅读全文
摘要:线段树 (本题无需建树,少了很多)#include#includeint sum[5000005],rt,data,lb,rb,n,m;void add(int p,int l,int r,int now)//data新加的数 第p个位置 第now个子树{ sum[now]+=data; ...
阅读全文