2018.07.23[PA2015]Siano(线段树)】的更多相关文章

[PA2015]Siano 描述 Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米. Byteasar一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去.Byteasar想知道,每次收割得到的草的高度总和是多少,你能帮帮他吗? 输入 Input 第一行包含两个正整数n,m(1<=n,m<=500000),分别表示亩数和收割次数. 第二…
[BZOJ4293][PA2015]Siano Description 农夫Byteasar买了一片n亩的土地,他要在这上面种草. 他在每一亩土地上都种植了一种独一无二的草,其中,第i亩土地的草每天会长高a[i]厘米. Byteasar一共会进行m次收割,其中第i次收割在第d[i]天,并把所有高度大于等于b[i]的部分全部割去.Byteasar想知道,每次收割得到的草的高度总和是多少,你能帮帮他吗? Input 第一行包含两个正整数n,m(1<=n,m<=500000),分别表示亩数和收割次数…
传送门 这Seg确实不好写,不过因为它与ai的相对顺序无关,所以,我们在对ai排序之后,就可做了.维护一个区间最大值,维护一个和,维护一个区间赋值的懒标记,再维护一个时间变化的标记就可以了. 因为不论怎样在排序过后的序列里面右边的一定不小于左边的,所以我们可以在线段树里面二分来找到每一次操作的开始位置,然后就可以区间修改了. #include<cstdio> #include<algorithm> using namespace std; #define MAXN 500005 #…
传送门 给出一个数字字串,给出若干个询问,询问在字串的一段区间保证出现2017" role="presentation" style="position: relative;">20172017而不出现2016" role="presentation" style="position: relative;">20162016需要删去的最少字符. 下面定义5个状态. 状态0:连2都没有 状态1:只…
题目链接 \(Description\) 有一片n亩的土地,要在这上面种草. 在每一亩土地上都种植了一种独一无二的草,其中,第\(i\)亩土地的草每天会长高\(a[i]\)厘米. 一共会进行\(m\)次收割,其中第\(i\)次收割在第\(d[i]\)天,并把所有高度大于等于\(b[i]\)的部分全部割去.求每次收割得到的草的高度总和是多少. /* 无论怎么收割,长得快的草一定是不矮于长得慢的:而询问与下标无关 所以按生长速度排序,某一时刻的高度一定是递增的,这样就可以二分了 注意很多longlo…
传送门 线段树维护区间取模,单点修改,区间求和. 这题老套路了,对一个数来说,每次取模至少让它减少一半,这样每次单点修改对时间复杂度的贡献就是一个log" role="presentation" style="position: relative;">loglog,所以维护区间最大值剪枝,然后每次单点暴力取模,这样的话时间复杂度为O(nlogn)" role="presentation" style="posi…
传送门 给出一个二维平面,给出若干根线段,求出x" role="presentation" style="position: relative;">xx坐标为x0" role="presentation" style="position: relative;">x0x0时在最上方的线段的标号(若有多条输出最小的). 线段树好题,这题是李超线段树板子题. 没学过的这道题可以让你很好的理解李超线段树…
传送门 这道题维护区间加,区间开根,区间求和. 线段树常规操作. 首先回忆两道简单得多的线段树. 第一个:区间覆盖,区间加,区间求和. 第二个:区间开根,区间求和. 这两个是名副其实的常规操作. 但这道题如果学习没有区间加的做法维护最大值很容易卡掉. 所以怎么做呢? 区间加和区间求和就略了. 考虑到开根的性质,显然一段区间的数多开几次根差就不大了. 这样的话,我们维护区间最大值和区间最小值,如果当前区间的最大值与最小值的差不大于1的话就直接进行开根操作,否则继续递归. 开根时要分类讨论. 我们令…
传送门 线段树常规操作了解一下. 单点修改维护区间最大连续和. 对于一个区间,维护区间从左端点开始的连续最大和,从右端点开始的连续最大和,整个区间最大和,区间和. 代码如下: #include<bits/stdc++.h> #define N 500005 #define lc (p<<1) #define rc (p<<1|1) #define mid (T[p].l+T[p].r>>1) using namespace std; struct Node{…
题目中没有明说会爆int和longlong 的精度,但是在RNG函数中不用unsigned int 会报精度,导致队友debug了很久... 根据每次生成的l,r,v对区间更新m次,然后求 i*ai的异或和.挺裸的线段树,只要ai<v就更新ai.在线段树结点中维护区间最小值,每次更新时,如果区间最小值>=v,那么就不用更新了. #include<bits/stdc++.h> #define lson rt << 1 #define rson rt << 1…