线段树
文章平均质量分 77
Fizzmy
这个作者很懒,什么都没留下…
展开
-
hdu6039 Gear Up-线段树
题意: 给出n个齿轮的半径和n个齿轮之间的关系(角速度相等或线速度相等),两种操作,第一种操作:修改一个齿轮的半径,第二种操作:给一个齿轮角速度,输出最大的角速度,答案取ln(自然对数)。 Solution: 我们随意画一个图感受一下: (粗边表示角速度相等,细边表示线速度相等,图中维护的是每个点的角速度和w1w_1的关系) 我们可以发现一个规律:如果修改的点的父亲边是线边,那么到他原创 2017-12-26 10:17:57 · 492 阅读 · 2 评论 -
BZOJ2727: [HNOI2012]双十字-树状数组
传送门题意:给定一个R∗CR∗CR*C的01 矩阵,要求计算出这个 01 矩阵中有多少个双十字。双十字由两条水平的和一条竖直的“1”线段组成,要求满足以下几个限制:1.两条水平的线段不能在相邻的两行。2.竖直线段上端必须严格高于两条水平线段,下端必须严格低于两条水平线段。3.竖直线段必须将两条水平线段严格划分成相等的两半。4.上方的水平线段必须严格短于下方的水平线段。...原创 2018-06-05 11:25:36 · 440 阅读 · 0 评论 -
BZOJ5249:[2018多省省队联测]IIIDX-线段树
传送门题意:你需要给给正在制作中的游戏《IIIDX》安排曲目的解锁顺序。游戏内共有n首曲目,每首曲目都会有一个难度d,游戏内第i首曲目会在玩家Pass第⌊ik⌋⌊ik⌋\lfloor\frac i k\rfloor首曲目后解锁。安排这些曲目的顺序,使得每次解锁出的子的难度不低于作为条件需要玩家通关的曲子的难度,即使得确定顺序后的曲目的难度对于每个i满足di≥d⌊ik⌋di≥d⌊ik⌋d...原创 2018-04-09 11:53:41 · 311 阅读 · 0 评论 -
BZOJ4516: [Sdoi2016]生成魔咒-后缀数组+线段树+RMQ
传送门题意:给出一个字符串,分别求出前1~n位所含的不同的字符串个数n<=100000n<=100000nO(nlogn)O(nlogn)O(n\log n)代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>...原创 2018-03-21 18:35:35 · 314 阅读 · 0 评论 -
BZOJ4515: [Sdoi2016]游戏-树链剖分+超哥线段树
传送门题意:Alice 和 Bob 在玩一个游戏。游戏在一棵有 n 个点的树上进行。最初,每个点上都只有一个数字,那个数字是 123456789123456789。有时,Alice 会选择一条从 s 到 t 的路径,在这条路径上的每一个点上都添加一个数字。对于路径上的一个点 r,若 r 与 s 的距离是 dis,那么 Alice 在点 r 上添加的数字是 a×dis+b。有时,Bo...原创 2018-03-18 19:25:34 · 355 阅读 · 0 评论 -
BZOJ2124 等差子序列-线段树+hash
传送门题意:给出一个N的排列,问是否存在一个长度至少为3的等差子序列n<=10000Solution:注意到我们给出的是一个排列,而且我们只需要找长度为3的子序列即可那么我们可以枚举中间项x,用01串S和T来表示x前面的数中[1,x-1]和[x+1,x+x-1]是否出现,每次判断串S和T的反串是否相等即可,如果不相等说明会出现等差子序列判断两个串是否相等,我们...原创 2018-03-11 16:49:58 · 311 阅读 · 0 评论 -
Codeforces 935F. Fafa and Array-线段树
传送门题意:给出一个序列A,定义函数f(A)=∑n−1i=1|ai−ai+1|f(A)=∑i=1n−1|ai−ai+1|f(A)=\sum_{i=1}^{n-1}|a_i-a_{i+1}|先给出两种操作:1.在区间[l,r]内找一个位置,使得把这个位置的值加上x后,f(A)最大,求这个最大值2.把区间[l,r]加上x序列长度和询问长度<=1e5Solution...原创 2018-02-22 19:57:32 · 786 阅读 · 0 评论 -
Codeforce 762E.Radio stations-动态开点线段树 or CDQ分治
传送门题意:数轴上有 n 个广播站。第 i 个广播站坐标为xixix_i,信号半径为ririr_i,频率为fifif_i。1.如果称两个广播站i和j(i< j)是可互相到达的,那么min(ri,rj)>=|xi−xj|min(ri,rj)>=|xi−xj|min(r_i, r_j)>=|x_i-x_j| 2.如果称两个广播站i和j(i< j)是”坏的”,...原创 2018-02-28 21:24:20 · 359 阅读 · 0 评论 -
Codeforces 331D3-线段树+扫描线+倍增
传送门题意:在n*n的坐标内给出一些箭头,给出一些出发点、出发方向以及出发时间,遇到箭头就需要改变方向为箭头的方向,对每个出发点求最后能走到哪数据范围1e5Solution:口胡起来特别简单:对于不同方向的箭头和出发点分别用线段树+扫描线建出相应的图,最后在建出的图上跑倍增就可以了 我们可以把出发点看做没有长度的箭头,就可以和箭头一起搞了,在建图时我们可以添加一个中间...原创 2018-02-20 18:27:44 · 378 阅读 · 0 评论 -
BZOJ4869: [Shoi2017]相逢是问候-线段树+数论
传送门题意:给出一个序列a,两种操作1.将[l,r]这段区间所有的数aiaia_i换为caicaic^{a_i}2.求[l,r]这段区间的和,对p取模1≤n≤50000; 1≤m≤50000; 1≤p≤100000000; 0<c<p; 0≤ai<p1≤n≤50000; 1≤m≤50000; 1≤p≤...原创 2018-03-14 19:16:03 · 398 阅读 · 0 评论 -
Codeforces217E Alien DNA -线段树+逆向思考
传送门题意:给你一个字符串,n个操作[li,ri][li,ri][l_i,r_i],每次操作把区间内的字符串复制一遍并打乱接在后面,打乱的规则为:s1s2s3...sn−>s2s4s6...s1s3s5...s1s2s3...sn−>s2s4s6...s1s3s5...s_1s_2s_3...s_n->s_2s_4s_6...s_1s_3s_5...,求n次操作后结果的前k...原创 2018-02-09 14:34:53 · 312 阅读 · 0 评论 -
Codeforces 920F SUM and REPLACE-线段树+欧拉筛
传送门题意:n个数a,q个操作,两种操作类型:1.[l,r]区间中每个数替换为这个数的因数个数2.区间求和q,n<=3e5,ai<=1e6" role="presentation" style="position: relative;">q,n=3e5,ai=1e6q,n3e5,ai1e6q,nSolution:值为1或2的数是不需要再进行操作的对于原创 2018-02-04 15:07:28 · 503 阅读 · 0 评论 -
Codeforces 343D Water Tree-线段树
传送门 题意: 给你一棵树,有三种操作: 1. 给一个点及其子孙赋值为1 2. 给一个点及其祖先赋值为0 3. 求一个点是1还是0Solution: 这道题显然可以用树剖做,但是复杂度不优秀(两个log),这里说一种一个log的做法: 先跑出树的dfs序,对dfs序建一棵线段树,那么操作1就变的非常简单,我们重点需要考虑的是操作2:暴力给每个点赋值是会T的,我们可以先只修改原创 2018-01-17 21:57:02 · 312 阅读 · 0 评论 -
bzoj2951: [Poi2001]Goldmine-线段树
题意: 给出n个天然金矿石的位置,选一小块长方形的矿地,此矿地长和宽为s和w且平行于坐标系统的轴线。这块地的价值是这块区域内天然金矿石的数量。计算出这块地的最大可能价值。 (1≤s,w≤10000,1≤n≤15000" role="presentation" style="position: relative;">1≤s,w≤10000,原创 2018-01-31 19:12:37 · 408 阅读 · 0 评论 -
HDU-6070 Dirt Ratio-线段树+分数规划
题意: 给你一个数组,找一段区间使得区间内不同数的个数与区间长度的比值最小。Solution: 这是一道经典的分数规划题,考虑二分答案k,那么我们的目标就是找一段区间使得val/len<=k,val是区间内不同的数的个数,len是区间长度,转化一下可以得到val-k*len<=0,我们可以利用线段树达到快速查询的效果:维护区间最小值,pre[a[i]]记录上一个值为a[i]的数出现的位置,每次把原创 2017-12-28 14:48:09 · 212 阅读 · 0 评论 -
BZOJ2957 楼房重建-线段树
题意: 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有原创 2018-01-11 20:20:49 · 239 阅读 · 0 评论 -
Codeforces 899F Letters Removin-线段树
传送门题意: 给一个字符串和m个操作,每次给出l,r,c,把字符串中l-r这段区间的字符为c的字符删掉,求最后的字符串。(n,m<=2e5)Solution: 此题显然不能离线搞,那么有什么动态的优秀的数据结构呢?我们一定会先想到线段树,我们可以维护每个区间剩余字符的个数siz和区间中每个字符的个数num,通过siz来求出每个l,r对应的在线段树上的l,r。 PS:因为字符串一定是不断减少的,原创 2017-12-18 15:19:53 · 635 阅读 · 0 评论 -
洛谷P4242 树上的毒瘤-树剖+虚树+点分治
传送门题意:这棵树上有 n 个节点,每个点的初始颜色为 cicic_i 。接下来进行 q 个操作:1.修改树上某个点到另外一个点的简单路径上所有毒瘤的颜色。2.对于给定的树上某个点集 S ,定义某个点集内的点的权值为:Wi=∑j∈ST(i,j)Wi=∑j∈ST(i,j)W_i=\sum_{j\in S}T(i,j)其中T(i,j)表示i到j的路径上的颜色的段数每次指...原创 2018-05-30 14:37:50 · 561 阅读 · 0 评论