线段树
文章平均质量分 63
Cosmic_Tree
什么时候才能像杨大佬一样强啊(´;︵;`)
展开
-
CodeForces - 138C - Mushroom Gnomes - 2 - ( 线段树 + 离散化 )
题目链接:点击进入题目题意现在有 n 棵树, m 个蘑菇,每棵树给出位置 a [ i ] ,高度 h [ i ] ,以及到左边的概率 l [ i ] ,覆盖区间 [ a [ i ] − h [ i ] , a [ i ] - 1 ] 到右边的概率 r [ i ] ,覆盖区间为 [ a [ i ] + 1 , a [ i ] + h [ i ] ] ,每个蘑菇有一定的价值,如果蘑菇被一棵或者多棵树覆盖,则其价值为0,现在问最终对蘑菇价值的总和的期望。思路对于每个蘑菇,考虑不被砸到的原创 2021-08-20 18:20:52 · 165 阅读 · 0 评论 -
CodeForces - 914D - Bash and a Tough Math Puzzle( 线段树 + 思维 )
题目链接:点击进入题目题意n 个数,q 次操作:1 l r x 猜测区间 [ l , r ] gcd 为 x ,若是区间内在最多修改 ( 虚拟修改 )一个值的情况下可以使区间 gcd 变为 x ,就认为这个猜测是正确的,输出 YES ,否则输出 NO;2 i y 将 a [ i ] 改为 y ;思路区间查询 gcd ,单点修改,基本定型线段树第一个操作,问的是最多修改一次的前提下,猜测的gcd对不对。若是区间 gcd 是 x 的倍数,那么一定可以在一次修改内将区间 gcd 变为 x原创 2021-08-20 18:20:38 · 224 阅读 · 0 评论 -
HDU - 4902 - Nice boat ( 线段树 )
题目链接:点击进入题目题意n个数,q次操作:1 l r x 将 [ l , r ] 内的数都变为 x2 l r x 把 [ l , r ] 内比 x 大的数都变为 gcd ( a [ i ] , x )思路第一个操作是一个典型的区间修改问题,第二个操作,其实也可以看作一个区间修改的问题,看第一个操作,我们可以知道,经过第一个操作过后,一整个区间都会变为同一个数,所以,我们对于每个区间可以维护一个 lazy 标记,看区间内的数是不是同一个数,用 data 记录这个数,同时我们可以维护一个 m原创 2021-08-08 09:29:34 · 400 阅读 · 0 评论 -
POJ - 2528 - Mayor‘s posters ( 线段树 + 离散化 )
题目链接:点击进入题目题意n 次操作,第 i 次给你一个区间 [ l , r ] ,将其染成 i 色,问最后会看见多少种颜色(操作区间交的部分,后来的颜色覆盖前面的颜色 )思路这个题n是1e4,而区间达到了1e7,如果我们用常规的线段树来存整个区间里的点,也就是开4e7的空间,代码// Problem: Mayor's posters// Contest: Virtual Judge - POJ// URL: https://vjudge.net/problem/POJ-2528//原创 2021-08-18 21:17:21 · 283 阅读 · 0 评论 -
P1558 色板游戏 -( 线段树 )
题目链接:点击进入题目思路线段树区间修改,可以用二进制存取颜色的状态,区间合并用或运算 ( | ) ,区间查询,将得到的状态用__builtin_popcount()函数 ( 用于计算一个 32 位无符号整数有多少个位为1 ) 转化为所求答案。( 貌似是这个题的中文版 ?! )代码//#pragma GCC optimize(3)//O3//#pragma GCC optimize(2)//O2#include<iostream>#include<string>#原创 2021-08-08 09:26:07 · 134 阅读 · 0 评论 -
POJ - 2777 - Count Color ( 线段树 )
题目链接:点击进入题目题意长度为n的序列,m种颜色,序列初始颜色均为第一种颜色,k次询问:C x y z 将 [ x , y ] 修改为第 z 种颜色P x y 查询 [ x , y ] 中不同颜色的数目思路线段树区间修改,可以用二进制存取颜色的状态,区间合并用或运算 ( | ) ,区间查询,将得到的状态用__builtin_popcount()函数 ( 用于计算一个 32 位无符号整数有多少个位为1 ) 转化为所求答案。代码//#pragma GCC optimize(3)//O原创 2021-08-08 09:25:46 · 379 阅读 · 0 评论 -
HDU - 1698 - Just a Hook( 线段树 )
题目链接:点击进入题目:题意给你一个长 n 的序列,初始值全为 1 ,q 次操作,每次将 [ x, y ] 的值改为 z ,问最后整个序列的和为多少思路线段树实现区间修改,以及根节点值查询代码//#pragma GCC optimize(3)//O3//#pragma GCC optimize(2)//O2#include<iostream>#include<string>#include<map>#include<set>//原创 2021-08-08 09:25:30 · 169 阅读 · 0 评论 -
CodeForces - 1549D - Integers Have Friends ( 差分 - 线段树 - 双指针 )
题目链接:点击进入题目题意定义一个友好区间为,存在一个 m ( m >= 2 ),使区间内的所有数 % m 值相等,让你求给定数组的最大友好区间长度。思路如果两个数 x , y , 取模后的值相同,则需要满足:| x - y | % mod == 0。若是一个区间内 % mod 值相等,则是所有差值的 gcd。所以根据这一特性,我们不难想到对原数组差分,然后区间求 gcd( 区间求 gcd 可以用线段树来实现 ),然后我们再用双指针维护一个 右端点 指定 的情况下 左端点最远 且原创 2021-08-02 09:33:31 · 281 阅读 · 0 评论 -
【模板】线段树 2(区间乘,区间加,区间和)
题目链接https://www.luogu.com.cn/problem/P3373代码#include<iostream>#include<string>#include<map>//#include<unordered_map>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<algori原创 2020-09-05 19:11:17 · 266 阅读 · 0 评论 -
【模板】线段树 1(区间加,区间和)
题目链接 https://www.luogu.com.cn/problem/P3372代码#include<iostream>#include<string>#include<map>//#include<unordered_map>#include<queue>#include<cstdio>#include<vector>#include<cstring>#include<algor原创 2020-09-05 19:06:13 · 226 阅读 · 0 评论 -
upc--小赵的盆栽(dfs序+线段树)
题目描述小赵和小静逛街回来之后在路边看到了一家花店。钢铁小赵10分钟后买了一个绿油油盆栽送给了小静。回到了学校,小赵自顾很细心的照顾盆栽。由于没给小静买花,小静有些郁闷,所以小静决定给小赵制造一点麻烦。为方便理解,这棵盆栽呈现出树的结构,每个分叉为一个节点,树枝为边。而且每个分叉上都有一片叶子,叶子刚买回来长度为0。为了方便,小赵给每个节点都进行了标号,根节点标号为1。小赵每天会对所有节点喷上AC药剂,喷上AC药剂叶子会长长1mm。但小静每天会在小赵喷过药剂之后,选择对盆栽的一树枝上所有节点喷上WA药原创 2020-09-01 15:14:37 · 278 阅读 · 0 评论 -
牛客 —求和(dfs序+线段树)
题目链接https://ac.nowcoder.com/acm/contest/5158/I思路用dfs把一棵树转换成区间,然后题目就变成了用线段树来解决区间求和和单点修改的问题代码#include<iostream>#include<string>#include<map>//#include<unordered_map>#include<queue>#include<cstdio>#include<vec原创 2020-09-01 13:44:28 · 207 阅读 · 0 评论