我有预感以后会写很多线段树
_ 泛白
QQ1204731545
展开
-
2019 ICPC 南昌 Regional K. Tree(树上启发式合并 + 动态开点线段树)
题意求以111为根的nnn个点的有根树上,满足下面条件的有序点对(x,y)(x,y)(x,y)数目(点iii的权值为viv_ivi):一个点不为另一个点的祖先vx+vy=vlca(x,y)v_x+v_y=v_{lca(x,y)}vx+vy=vlca(x,y)xxx到yyy的路径长度小于等于给定的值 kkkn,k≤1e5,0≤vi≤nn,k\le 1e5, 0\le v_i\l...原创 2020-01-29 17:25:53 · 951 阅读 · 2 评论 -
2019 ICPC 南京 Regional F. Paper Grading(字典树DFS序剖分+树套树)
题意:有nnn个字符串s1,s2...sns_1,s_2...s_ns1,s2...sn,qqq个操作:1 Q k l r1\ Q\ k\ l\ r1 Q k l r,给出字符串QQQ,求sl,sl+1...srs_l,s_{l+1}...s_rsl,sl+1...sr中和字符串QQQ公共前缀长度大于等...原创 2020-01-28 15:54:11 · 748 阅读 · 0 评论 -
Codeforces Round #594 (Div. 1) C. Queue in the Train(线段树)
题目链接解题思路:直接模拟就好,这里用线段树优化模拟过程。具体的:维护一个当前正在排的队列,可知这个队列从前往后序号是递减的,进入队列的人它的结束时间是已知的,那么就用线段树查询这个人座位的左边是否存在出发时间小于等于这个人的结束时间 的人,如果有,就让最早的那个人进来。当这个队伍空了的时候,说明可以在整体选择了,这个时候有两种情况:所有没去排队的人的开始时间都比当前时间要大存在开始时...原创 2019-10-20 20:49:18 · 215 阅读 · 0 评论 -
Comet OJ - Contest #11 D. isaster(kruskal重构树+线段树)
题意:你需要支持对一张 nn 个点 mm 条边点带权的无向连通图进行以下两种操作:修改点 x 的点权。询问从点 x 出发只经过编号不大于 y 的点能到达的所有点的点权之积取模 998244353。题解:新的知识点:kruskal重构树这个东西可以把一张无向图重构成一棵树,然后就可以很方便的得到某个点只走边权不超过y的边可以到达的点的集合(得到dfs序上的一个区间),然后维护这个区间...原创 2019-09-22 22:38:57 · 183 阅读 · 0 评论 -
Educational Codeforces Round 73(Div 2) F. Choose a Square(线段树)
题目描述:平面上有n个点,每个点有权值(可为负数),让你画一个正方形,使得这个正方形包含的点的权值和减去正方形的边长的值最大。这个正方形的左下角和右上角都要在直线y=x上。解题思路:注意到一个点(x,y)如果要被正方形(a, a, b, b)包含,则a <= min(x,y)且 b >= max(x,y).那么可以把问题转换成一维上的问题:有n个区间[l,r],每个区间有一个权...原创 2019-09-21 15:10:47 · 297 阅读 · 0 评论 -
2019 ICPC南京网络赛 I Washing clothes (李超树)
题目描述:N persons are about to engage in their favorite activity doing laundry together! The i-th person will come at tit_iti minute. Unfortunately, there is only one washing machine, which takes xx...原创 2019-09-02 22:32:02 · 400 阅读 · 0 评论 -
洛谷P2572 [SCOI2010]序列操作(复杂的线段树/简单的珂朵莉树)
题意:lxhgww最近收到了一个01序列,序列里面包含了n个数,这些数要么是0,要么是1,现在对于这个序列有五种变换操作和询问操作:0 a b 把[a, b]区间内的所有数全变成01 a b 把[a, b]区间内的所有数全变成12 a b 把[a,b]区间内的所有数全部取反,也就是说把所有的0变成1,把所有的1变成03 a b 询问[a, b]区间内总共有多少个14 a b 询问[a,...原创 2019-07-17 20:08:23 · 271 阅读 · 0 评论 -
2018CCPC吉林赛区 H Lovers(线段树)
题意:有n个字符串,一开始都是空串,两种操作:操作一:wrap l r d(d为0~9的数字): 把区间 [l, r] 的每个字符串Si 变成字符串d Si d, 也就是在每个字符串的头尾都加上数字d。操作二:query l r :把每个字符串都看成一个数字,求区间[l, r]的和。题解:对于一个长度为t的字符串,假设它原本的值为v,那么它进行完操作一之后,它的值会变为 d * 10^(...原创 2019-07-16 21:52:52 · 504 阅读 · 0 评论 -
2019南昌邀请赛 H. Another Sequence (fwt+离散化+线段树/fwt+珂朵莉树)
题意:给两个长度为n的数组,数字大小不超过1e5,求出它们两两相或的数组c,从小到达排序后支持两种操作:0 x :查询位置为x的数的当前值l r:对[l,r]区间的数开方题解首先通过fwt得到两两相或的数组。离散化+线段树版本:因为区间范围很大,所以先离散化,之后就是写线段树支持区间赋值,区间开方,单点查询的操作。#include<bits/stdc++.h>#def...原创 2019-07-23 18:59:49 · 491 阅读 · 0 评论 -
HDU - 6183 Color it(动态开点线段树)
题目链接题意:一个二维坐标系上,有两种操作:1:在(x,y)这个点插入一个颜色为c的点2:在横坐标范围为(1,x),纵坐标范围为(y1,y2)的区域查询有多少不同颜色的点。题解:颜色最多有51个,所以可以对每个颜色,维护一个最小值线段树,每次查询就在(y1,y2)这个区间查询最小值,如果小于x,就说明这个矩阵范围有点存在。空间复杂度50nlogn,n是1e6,妥妥的爆炸了。不过题目中有...原创 2019-05-23 11:36:36 · 187 阅读 · 0 评论