关闭

Create

题目大意一个序列,有很多询问,每个询问要问区间>=x的数的个数。 现有若干修改操作,区间赋值,每次修改后请你将所有询问得到的答案和输出。颜色段均摊分析颜色段! 可以用set维护颜色段。 然后只需要考虑一个区间全部由x变成y产生代价。 先把询问按x排序做可持久化线段树,然后就很好做。#pragma GCC optimize(2) #include #include<algori...
阅读(100) 评论(0)

[bzoj4826][HNOI2017]影魔

题目描述影魔,奈文摩尔,据说有着一个诗人的灵魂。事实上,他吞噬的诗人灵魂早已成千上万。千百年来,他收集了各式各样 的灵魂,包括诗人、牧师、帝王、乞丐、奴隶、罪人,当然,还有英雄。每一个灵魂,都有着自己的战斗力,而影魔,靠 这些战斗力提升自己的攻击。奈文摩尔有 n 个灵魂,他们在影魔宽广的体内可以排成一排,从左至右标号 1 到 n。 第 i个灵魂的战斗力为 k[i],灵魂们以点对的形式为影魔提供...
阅读(569) 评论(0)

[bzoj4771]七彩树

题目描述给定一棵n个点的有根树,编号依次为1到n,其中1号点是根节点。每个节点都被染上了某一种颜色,其中第i个节 点的颜色为c[i]。如果c[i]=c[j],那么我们认为点i和点j拥有相同的颜色。定义depth[i]为i节点与根节点的距离 ,为了方便起见,你可以认为树上相邻的两个点之间的距离为1。站在这棵色彩斑斓的树前面,你将面临m个问题。 每个问题包含两个整数x和d,表示询问x子树里且dep...
阅读(305) 评论(0)

Ztxz16学图论

题目大意给定一张图,每次询问编号在[l,r]的边连上后会形成多少联通块。离线做法我们考虑莫队。 考虑左端点所在的每一块,左端点到块末最多根号的距离,右端点是单调的。并查集容易添加,因此只保留块末到右端点的联通情况,每次暴力加上块末到左端点部分。在线做法把加入1~i条边,每条边权值设置为编号,所形成的最大生成树叫第i个版本。 [l,r]的答案=第r个版本中联通块数量+第r个版本中[1,l-1]存在...
阅读(421) 评论(0)

[bzoj3720][非树分块算法]Gty的妹子树

前言这道题我博客有了,最近用了非树分块做法去弄,感谢dwjshift大神教会我正确的姿势。分块没有修改和加点操作我们是可以用可持久化线段树合并做的。 对于修改和加点操作进行分块,每跨过一块就暴力重构可持久化线段树。 对于一个询问操作,如果询问是块内的新加点,则暴力扫其整个子树获得答案。 否则,先在线段树内找到没有该块内操作影响时的答案,然后枚举块内的操作,并统计影响。这个可以用时间戳来判断是否...
阅读(316) 评论(0)

rope大法好

rope大法好 轻松实现可持久化数组...
阅读(218) 评论(0)

[bzoj3673]可持久化并查集

题目大意实现一个可持久化并查集做法用可持久化线段树或平衡树之类的维护一个可持久化数组就好了。 这里我用了rope大法#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; using namespace __gnu_cxx; co...
阅读(437) 评论(0)

数据结构优化连边

什么是线段树连边对于一类题目,它们建出来的图好大好大,这时候通常可以利用线段树(大多数时候是可持久化线段树)来进行优化连边,保证点的连通性不变,路径权值信息不变。例题1:湖南集训2014JabberwockyII前言:这道题当时是我在Noip吧问的,年代比较久远。 给出三个数列{Xi},{Ai},{Bi}。 若存在一个长度为m数列{Pi},满足P递增且P[1]=1,P[m]=n。 那么该数列P...
阅读(419) 评论(0)
    个人资料
    • 访问:251935次
    • 积分:10104
    • 等级:
    • 排名:第1813名
    • 原创:743篇
    • 转载:4篇
    • 译文:0篇
    • 评论:189条
    最新评论
    文章分类