线段树
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
桂林B题 A plus B
我是绝对不会说因为少加了一句if(l>r) return -1;特判然后拿的铜#include<bits/stdc++.h>using namespace std;const int maxn=2e6+9;//char s[maxn];char s[4][maxn];int c[maxn];struct node{ int l; int r; int minv; int maxv; int lz; }tr[maxn<<2];void pushdown原创 2021-11-08 16:20:04 · 326 阅读 · 1 评论 -
xay loves trees(主席树dfs序 标记永久化优化)
链接题意:思路:早上更新那题的强化版。用线段树尺取,或者主席树,主席树维护从根节点到链上的最大深度。每次插入新节点,询问不符合节点的id,由于区间不相交,这样的值最多一个。 每次更新一下答案就可以了。// Problem: xay loves trees// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/11258/F// Memory Limit: 1048576 MB// Time Limit: 4000 ms原创 2021-08-08 21:42:27 · 449 阅读 · 0 评论 -
Yazid的新生舞会(线段树)
题意:问所有满足出现次数严格超过一半的数的区间数。原创 2021-08-04 21:11:48 · 261 阅读 · 2 评论 -
Tree Xor(线段树)
link题意:给定一颗树和每条边两个相邻节点的异或值,和每个节点的取值范围 Li~Ri,求有多少种取点的合法方案。思路:先确定根节点的值,那么所有值都确定了,那么也就是求所有区间异或上各自对应的点值,很可惜,区间异或不具有连续性,也就是说会分裂成好几个区间,那么有个做法就是按照线段树的建树方法来分裂区间,这些区间满足前缀不变,后缀为00000~111111,这样的区间也是具有连续性的,我们可以将每一个区间分裂成最多logn个区间,然后区间排序,求被覆盖n次的点的数量,类似于扫描线的做法。复杂度O(n原创 2021-07-26 23:05:20 · 428 阅读 · 0 评论 -
第十二届蓝桥杯国赛括号线段树
题面:题意:操作1 把区间括号翻转操作2 查询最长合法括号序列序列从l开始思路:类似于区间合并的问题,对于每个区间我们记录左右最小最大前缀值,我们把(看作1,)看作-1,合法的括号序列满足于当前的sum=0且对于任意前缀都是>=0,那么满足二分性质,我们可以二分套线段树查询到从l开始满足前缀大于等于0的最大位置,然后如果下个位置的sum<0那么就是当前位置,但是会有可能是查询到n,然后后面没数了且sum>0,那么我们就要二分出第一个后缀最大值等于sum的位置。调了一下午调的心原创 2021-06-12 16:59:40 · 564 阅读 · 1 评论 -
权值线段树套传统线段树+懒标记持久化+动态开点
有 N 个位置,M 个操作。每个位置可以同时存储多个数。操作有两种,每次操作:如果是 1 a b c 的形式,表示在第 a 个位置到第 b 个位置,每个位置加入一个数 c。如果是 2 a b c 的形式,表示询问从第 a 个位置到第 b 个位置,第 c 大的数是多少。输入格式第一行包含两个整数 N,M。接下来 M 行,每行包含一条指令,形如 1 a b c 或 2 a b c。输出格式输出每个询问的结果,每个结果占一行。数据范围1≤N,M≤50000,1≤a≤b≤N,1 操原创 2020-12-14 11:42:15 · 232 阅读 · 0 评论 -
[HDU-3397]线段树区间修改双lazy维护,好题
题目链接题意:给定一个01串,操作有区间取反 区间赋1 区间赋0 查询区间1的个数 和连续1的个数。思路:维护双lazy,注意当置成全0或者全1的时候清空懒标记,如果区间取反那就不要清空懒标记,因为区间取反和前面01序列的取值是有关的。#include<iostream>#include<cstring>using namespace std;const int N=100010;struct node{ int l; int r; int lnum0; i.原创 2020-12-04 11:08:54 · 225 阅读 · 0 评论 -
线段树找从1开始大于等于该值的模板
一开始我和大佬想的是二分再套线段树,然后tle了,想不到优化然后就查网了,如果左子树满足条件就不要递归右子树了可以优化一下,然后如果整段区间的最大值也不满足那就没必要往下递归了。int query(int m,int l,int r,int val){ if(tree[m].l==tree[m].r) { if(tree[m].val>=val) return tree[m].l; return -1; }原创 2020-10-23 09:35:41 · 249 阅读 · 0 评论 -
清理班次
农民约翰正在指挥他的N头牛进行清理工作。他将一天划分为了T个班次(1~T)。每头牛都只能在一天中的某一个时间段内进行不间断的工作。你需要帮助约翰排列出一个合理的奶牛的清理班次,使得每个班次都有奶牛在进行清理,而且动用的奶牛数量可以尽可能的少。输入格式第1行:两个空格隔开的整数N和T。第2…N+1行:第i+1行包含两个整数,分别表示第i头牛可以进行工作的开始时间和结束时间。输出格式输出一个整数,表示在每个班次都有奶牛清理的情况下,所需的奶牛最小数量。如果无法做到每个班次都有奶牛清理,则输出-原创 2020-09-07 09:29:00 · 273 阅读 · 0 评论 -
Interesting Array
解题报告:这题看着别人板子写的,竟然是线段树,真没看出来Orz,思路就是我们通过m次操作,建立线段树,并且每次给区间l,r 或上一个d值,最后检查每次询问的范围内想与的值还是不是原来的值,如果不是就输出no#include<iostream>#include<cstring>#include<vector>#include<algorithm>#include<map>#include<set>#include<.原创 2020-09-03 20:54:14 · 374 阅读 · 0 评论 -
acwing 维护序列 线段树 懒标记(乘和加的序列维护)
老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。有长为 N 的数列,不妨设为 a1,a2,…,aN。有如下三种操作形式:把数列中的一段数全部乘一个值;把数列中的一段数全部加一个值;询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模 P 的值。输入格式第一行两个整数 N 和 P;第二行含有 N 个非负整数,从左到右依次为 a1,a2,…,aN;第三行有一个整...原创 2020-04-12 20:07:56 · 287 阅读 · 0 评论 -
校门外的树(线段树做法)
校门外马路上本来从编号0到L,每一编号的位置都有1棵树。有砍树者每次从编号A到B处连续砍掉每1棵树,就连树苗也不放过(记 0 A B ,含A和B);幸运的是还有植树者每次从编号C到D 中凡是空穴(树被砍且还没种上树苗或树苗又被砍掉)的地方都补种上树苗(记 1 C D,含C和D);问最终校门外留下的树苗多少棵?植树者种上又被砍掉的树苗有多少棵?输入格式第一行L和N,表示校园外原来有L+1棵树,并...原创 2020-04-12 18:16:30 · 677 阅读 · 0 评论 -
P2184 贪婪大陆 线段树(优化:区间修改变为单点修改)
题目背景面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾。现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁。 小FF还有大好前程,他可不想命丧于此, 于是他派遣手下最后一批改造SCV布置地雷以阻挡蚂蚁们的进攻。题目描述小FF最后一道防线是一条长度为N的战壕, 小FF拥有无数多种地雷,而SCV每次可以在[ L...原创 2020-04-12 17:35:17 · 391 阅读 · 0 评论 -
线段树 蓝桥 油漆问题 求相交长方形面积
X星球的一批考古机器人正在一片废墟上考古。该区域的地面坚硬如石、平整如镜。管理人员为方便,建立了标准的直角坐标系。每个机器人都各有特长、身怀绝技。它们感兴趣的内容也不相同。经过各种测量,每个机器人都会报告一个或多个矩形区域,作为优先考古的区域。矩形的表示格式为 (x1,y1,x2,y2),代表矩形的两个对角点坐标。为了醒目,总部要求对所有机器人选中的矩形区域涂黄色油漆。小明并不需...原创 2020-03-08 23:15:36 · 353 阅读 · 0 评论