线段树
河渔船
成长的小垃圾
展开
-
线段树模板
线段树模板//①建树 const int MAXM=50000; //定义 MAXM 为线段最大长度 int a[MAXM+5],st[(MAXM<<2)+5]; // a 数组为 main 函数中读入的内容,st 数组为需要查询的数的信息(如和、最值等),树的空间大小为线段最大长度的四倍 void build(int o,int l,int r){ //传入的参数为原创 2016-12-23 14:40:20 · 273 阅读 · 0 评论 -
线段树模板(区间乘混加)
https://www.luogu.org/problem/show?pid=3373#include<iostream>#include<cstring>#include<cstdio>#define M 100000#define LL long longusing namespace std;struct H{ LL sum,l,r,len,addi,tim;}st[4*原创 2017-08-06 10:03:35 · 421 阅读 · 0 评论 -
P2161 [SHOI2009]Booking 会场预约
https://www.luogu.org/problem/show?pid=2161题意简析:你需要写一个数据结构,维护一个时间轴,支持如下操作:1)插入1个新区间,删除所有时间轴上与它有交的区间并输出个数。2)查询当前时间轴上的区间个数。我们可以用线段树来做(借鉴了sxb大神的代码)。离线处理。用线段树存序号的最小值。 当我们倒着插入第i号区间之前,在线段树里取最小值,那么当前插入的这个区间会原创 2017-08-05 21:13:54 · 435 阅读 · 0 评论 -
P1083 [NOIP 2012]借教室
https://www.luogu.org/problem/show?pid=1083#sub一开始容易想到的方法是线段树,每次修改时,如果出现负数,那么当前这个人一定不能满足了。 但是在noip里,这肯定不是正解,所以会超时那么一两个点。#include<iostream>#include<cstdio>#include<cmath>#include<stdlib.h>#define M原创 2017-08-05 15:55:50 · 204 阅读 · 0 评论 -
数轴染色
http://codevs.cn/problem/1191/ 这个数据范围是要nlogn的做法嘛。 线段树:一开始把数组全设为1,建一下树,然后修改的时候把白球全修改成0,每次用线段树求和就好了。 不过我确实调了一个上午啊。感谢sxb大神帮我找错#include<iostream>#include<cstdio>#define M 200000#define LL long longu原创 2017-08-05 11:24:10 · 254 阅读 · 0 评论 -
线段树区间修改与查询(求和)
P3372#include<iostream> #include<cstdio>#include<algorithm>#include<cstring>#include<string>#define MAXN 200000#define LL long longusing namespace std;struct H{ LL addi,sum,l,r,len;}st[MAX原创 2016-12-30 14:08:19 · 403 阅读 · 0 评论 -
P1531 I Hate It(线段树)
题见洛谷#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#define MAXN 200000 using namespace std;int a0[MAXN+5],st[MAXN*4+5]; void build(int o,int l,int r){原创 2016-12-23 16:46:07 · 344 阅读 · 0 评论 -
序列操作(线段树,模板)
n个数,m次操作 若a==1,求区间b-c最大值 若a==2,将a[ b ]改为c#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#define MAXN 200000 using namespace std;int a[MAXN+5],st[MAXN*4+5原创 2016-12-23 15:53:46 · 365 阅读 · 0 评论 -
刷题#R5
星空 【问题描述】 你是能看到第一题的 friends 呢。 ——hja 点点星空是一张n× m的棋盘,左下角有颗星星。尤和千每次可以将星星向 右边、右上、上边移动一格。尤和千轮流移动,尤先手,问尤是否必胜? 【输入格式】 多组数据,每行两个整数n,m,当 n=m=0 时数据停止。 【输出格式】 对于每组数据,如果尤必胜输出“Yuri” ,否则输出“Chito” 。 【样例输入】原创 2017-11-02 14:58:30 · 365 阅读 · 0 评论