数据结构
文章平均质量分 90
_ 泛白
QQ1204731545
展开
-
1458F - Range Diameter Sum(分治+数据结构)
题目链接题意给一颗n点无根树,令D(x,y)D(x,y)D(x,y)表示编号在[x,y][x,y][x,y]的点组成的树的直径,求∑l=1n∑r=l+1nD(l,r)\sum_{l=1}^n\sum_{r=l+1}^nD(l,r)∑l=1n∑r=l+1nD(l,r)解题思路考虑分治,可以把当前[l,r]的问题分解成[l,mid]的问题和[mid+1,r]的子问题。现在考虑如何快速所有左端点在[l,mid][l,mid][l,mid],右端点在[mid+1,r][mid+1,r][mid+1,r原创 2021-01-21 17:42:19 · 323 阅读 · 0 评论 -
2019 ICPC North America Qualifier F. Prospecting
题意:给一颗n点树,有边权和点权。边看成堆着土的隧道,土的数量就是边权,如果土的数量不为0,那么这条边不可以走,挖走1个土消耗1块钱。点上的权值x代表走到这个点能得到x块钱。有一个需要抵达的终点。起点为0。从起点出发,可以选择一个能走到的隧道并挖隧道里面的土。可以不用挖完。走到点上一定会获得点权的钱。如果当前钱的数量小于0就破产问最少需要多少钱可以走到终点问至少带多少钱可以让你在最坏的情况下依然可以到达终点。x[i]表示点i的权值,y[i]表示i的父亲边的权值n<=1e5n <= 1原创 2020-10-02 16:39:22 · 1201 阅读 · 0 评论 -
CodeForces 1303G - Sum of Prefix Sums(点分治+李超树)
题意给一颗树,每个点有点权,求树上一条路径u1,u2,...uku_1,u_2,...u_ku1,u2,...uk获得点权数组au1,au2,...auka_{u_1},a_{u_2},...a_{u_k}au1,au2,...auk。要使得它的前缀和的前缀和最大,求这个最大值。解题思路树上路径的问题会想到用点分治去解决,以点分治的想法,如何把当前一条路径和现存的路径信息合...原创 2020-02-17 10:55:36 · 388 阅读 · 0 评论 -
2019 CCPC-Final G.Game on the Tree(长链剖分+DP)
题目大意两个人在一个以1为根的树上玩游戏,一开始硬币在1。然后每一轮,如果当前硬币在u,当前的人可以选择一个v把硬币移动到v,条件是移动的距离要大于上一轮的人移动的距离。第一个人可以随便移动。问给出的树有多少个以1为根的子图可以让后手必胜。n≤2e5n\le2e5n≤2e5解题思路这题很容易推出来当1是树直径的中点的时候后手必胜。然后想要得到1是树直径中点的方案数,可以先得到1的每个儿...原创 2020-02-05 22:29:56 · 940 阅读 · 0 评论 -
Codeforces Round #616 C - Prefix Enlightenment(带权并查集维护二分图)
题意给你nnn个灯的开关状态,再给你kkk个子集。选择一个子集将会按下子集中所有数字对应的开关。mim_imi表示前iii个灯全部开启最少要选取多少个子集,求出所有的mi(i∈[1,n])m_i(i\in [1,n])mi(i∈[1,n])一些限制:任意三个子集的交集都是空集。一定存在一种选取方式使得所有的灯都亮着n,k≤3e5n,k\le 3e5n,k≤3e5解题思路:先观...原创 2020-02-03 12:43:02 · 320 阅读 · 0 评论 -
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 · 838 阅读 · 2 评论 -
2019 ICPC 南昌 Regional A. 9102(离线处理 && 带删并查集)
题意:需要维护一个可持久化的带删并查集。解题思路:可持久化数据结构如果没有强制在线就尝试离线建一颗时间顺序的树,然后直接处理,解决完一个儿子再回溯操作就行了。因为要回溯所以这里的并查集并没有路径压缩而是采用启发式合并。#include<bits/stdc++.h>using namespace std;const int maxn = 1e6 + 50;struct no...原创 2020-01-28 19:13:22 · 649 阅读 · 0 评论 -
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 · 689 阅读 · 0 评论 -
Comet OJ - Contest #11 D. isaster(kruskal重构树+线段树)
题意:你需要支持对一张 nn 个点 mm 条边点带权的无向连通图进行以下两种操作:修改点 x 的点权。询问从点 x 出发只经过编号不大于 y 的点能到达的所有点的点权之积取模 998244353。题解:新的知识点:kruskal重构树这个东西可以把一张无向图重构成一棵树,然后就可以很方便的得到某个点只走边权不超过y的边可以到达的点的集合(得到dfs序上的一个区间),然后维护这个区间...原创 2019-09-22 22:38:57 · 165 阅读 · 0 评论 -
牛客挑战赛32 E. 树上逆序对 (树状数组)
题意:一棵树,每个点可以选择ai或−aia_i 或-a_iai或−ai两个值,m次查询,每次询问是否可以使得树上逆序对的个数为k。树上逆序对:aj>ai且j为i的祖先a_j > a_i且j为i的祖先aj>ai且j为i的祖先,则称(i,j)为一对树上逆序对。题解:可以发现,因为一个位置i只能取ai或-ai,一对数字i,j是否成为逆序对,只和其中a的绝对值较大的那个有关...原创 2019-09-21 13:21:01 · 484 阅读 · 0 评论 -
2019ICPC南昌网络赛 I. Yukino With Subinterval (带修主席树/CDQ分治)
题意:给你一个数组,带修改,每次查询一个区间内,值在[x,y]区间内的最长连续段个数。题解:把所有连续段缩到它的左端点,查询的时候只要查[l+1,r]区间内有多少个左端点即可,a[l]这个点因为是第一个点所以特殊判断它是否在[x,y]范围内就可以了。查询[l+1,r]区间内有多少个值在[x,y]范围内的数是经典的主席树问题,因为带修改所以用树状数组套主席树(上一次敲这玩意是一年前的事情了…...原创 2019-09-18 00:26:10 · 283 阅读 · 0 评论 -
2019徐州网络赛 F. Little M's attack plan(思维+树状数组+容斥)
题目大意:给你一棵n个点的树,每个点有权值,m次查询,每次查询(v,k),查询与结点v的距离小于等于k的结点的权值和。n≤1e6,m≤5000,k≤100n\le1e6,m\le5000,k\le100n≤1e6,m≤5000,k≤100解题思路:感觉题解说的挺清楚了:把原本的问题拆成k个问题后要容斥(画个图应该就明白了)。然后可能会卡常,比较粗暴的写T了之后加了个快读1900+ms飘...原创 2019-09-07 22:03:16 · 212 阅读 · 0 评论 -
牛客小白月赛14 H-图上计数(主席树求子树上第k大)
题目描述给定一棵以 1 为根,大小为 N 的树,每个点有若干条出边,如果你要dfs 的话,它们需要按照输入的顺序去遍历(就是指定了dfs 序)你需要维护一种数据结构,支持两种操作:1 x:将 x 为根的子树中的节点,以dfs 序为下标,编号大小为关键字排序。相当于树的形态不变,但是子树里节点的编号排了遍序,dfs 序小的对应编号小的,dfs 序大的对应编号大的2 x:查询原先树中点 x ...原创 2019-05-12 12:04:14 · 222 阅读 · 0 评论 -
2019 icpc西安邀请赛 E. Tree(树链剖分+带修改的区间异或和)
题目链接题意:给一棵树,根结点为1,每个点有权值,有三种操作:让根节点到u的路径上所有点的权值&t让根节点到u的路径上所有点的权值|t查询根节点到u的路径所有点的异或和是否等于t题解:树链剖分把树上路径问题转换成区间问题,然后对权值的每一位建一棵线段树,查询的时候就查询区间内1的数量%2的值,是否和数字t的相应位相等。AC代码:#include<bits/std...原创 2019-05-28 14:37:55 · 381 阅读 · 0 评论 -
CodeForces - 707D Persistent Bookcase (可持久化数据结构)
Describe:Recently in school Alina has learned what are the persistent data structures: they are data structures that always preserves the previous version of itself and access to it when it is modifi...原创 2019-07-03 18:42:01 · 209 阅读 · 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 · 479 阅读 · 0 评论 -
CodeForces - 1190D Tokitsukaze and Strange Rectangle ( 离散化 + 树状数组 )
Describe:There are n points on the plane, the i-th of which is at (xi,yi). Tokitsukaze wants to draw a strange rectangular area and pick all the points in the area.The strange area is enclosed by th...原创 2019-07-17 10:38:09 · 385 阅读 · 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 · 223 阅读 · 0 评论 -
2019百度之星初赛第四场 wls的树(lca,主席树,缩点)
Problem Descriptionwls有一棵有根树,其中的点从11到nn标号,其中11是树根。每次wls可以执行两种操作中的一个:(1)选定一个点xx,将以xx为根的子树变成一条按照编号排序的链,其中编号最大的作为新的子树的根(成为原来xx的父亲节点的儿子,如果原来xx没有父亲节点则新的子树的根也没有父亲节点)。(2)查询两个点之间的最短路径上经过了多少边。Input第一行一个整数...原创 2019-08-25 17:03:36 · 550 阅读 · 3 评论 -
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 · 367 阅读 · 0 评论 -
2019湖南多校3 What Goes Up Must Come Down (树状数组)
What Goes Up Must Come Down (树状数组)题目链接Description:Several cards with numbers printed on them are lined up on the table.We’d like to change their order so that first some are in non-decreasing orde...原创 2019-03-24 18:45:56 · 1058 阅读 · 0 评论