随笔分类 -  线段树

摘要:数据太弱,直接让我小暴力一下就过了,一开始没注意到时间是15000MS,队友发现真是太给力了#include #include int n,q,a[100005],x[100005],p,l[100005],r[100005],t[100005];int tree[1000005];void bui... 阅读全文
posted @ 2014-07-31 23:09 Estimator 阅读(280) 评论(0) 推荐(0) 编辑
摘要:比赛时太大意,斐波拉契数列开小了。题目大意:1个序列,3种操作,改变序列某个数大小,将序列中连续的一段每个数都变成其最近的斐波拉契数,以及查询序列中某一段的数之和。解题思路:维护add[]数组表示线段树中每一段的需要改变到斐波拉契数的总和即可,color[]表示该段是否需要改变成斐波拉契,而当需要改... 阅读全文
posted @ 2014-07-29 22:34 Estimator 阅读(254) 评论(0) 推荐(0) 编辑
摘要:细节处理实在太重要了。#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){ ... 阅读全文
posted @ 2014-04-10 22:15 Estimator 阅读(283) 评论(0) 推荐(0) 编辑
摘要:首先应该对该【0,10000000】进行离散化即先将点集进行排序,然后从小到大缩小其中的间距,使得最后点数不会超过2*n然后就是线段树操作只需进行染色,然后最后用nlgn进行一个个查询颜色记录即可#include#includeint color[20005*4],a[20005],p[20005]... 阅读全文
posted @ 2014-03-24 21:19 Estimator 阅读(187) 评论(0) 推荐(0) 编辑
摘要:#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)... 阅读全文
posted @ 2013-11-10 17:21 Estimator 阅读(117) 评论(0) 推荐(0) 编辑
摘要:线段树 (本题无需建树,少了很多)#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; ... 阅读全文
posted @ 2013-11-10 13:25 Estimator 阅读(148) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示