摘要:题意: 两个序列a和b,初始a[i]=0,b[i]给定且为一个1到n的排列,要求维护以下两种操作:1.区间[L,R]内a[i]加1 2.询问[L,R]内a[i]/b[i](下取整)之和 n,q<=1e5 思路: 实际上a[i]/b[i]的线段树可以改为树状数组,因为只需要支持单点修改和前缀区间求和
阅读全文
摘要:题意:n个点被n-1条边连接成了一颗树,给出a~b和c~d两个区间, 表示点的标号请你求出两个区间内各选一点之间的最大距离,即你需要求出max{dis(i,j) |a<=i<=b,c<=j<=d} n<=100000 len[i]<=100000 思路:两年前张老师出的模拟赛里的题 设区间[a,b]
阅读全文
摘要:题意:有N个位置,M个操作。操作有两种,每次操作 如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c 如果是2 a b c形式,表示询问从第a个位置到第b个位置,第C大的数是多少。 N,M<=50000,N,M<=50000a<=b<=N1操作中abs(c)<=N2操作中c
阅读全文
摘要:题意: 给定一棵n个点的树,每条边有权值。求一条链,这条链包含的边数在L和U之间,且平均边权最大。N﹤=100000 思路: 做法一:RYZ作业 二分答案再点分治,寻找是否有大于0且边数在L和U之间的链 f[i]为当前子树深度为i的链最大总和,g[i]为前几个深度为i的链最大总和 维护一个下标递增,
阅读全文
摘要:题意: 思路:分块 使用树状数组维护sum[i]的前缀和 使用主席树维护root到u的路径上点的编号出现的个数 每次操作如果是修改就加入队列 如果是询问,考虑块内操作对询问的影响,每次在x点加上y会使x到root的点sum都加上y 每根号n次操作就暴力重构一次,清空队列并求出新的sum[i]的前缀和
阅读全文
摘要:题意: 思路: 预处理出b[i]代表i位置之前比a[i]小的数的个数 以每个数为结尾的组数是线段树中(1,a[i]-1) 对于a[i]换到最后,相当于线段树中(a[i]+1,n)-- 交换后b[i]又变成了a[i]-1因为换到最后不需要考虑位置只需要考虑大小关系
阅读全文
摘要:题意:在一个序列中支持以下操作: 1.区间加 2.区间开根向下取整 3.区间求和 n,m<=100000 思路:因为有区间开根的存在暴力更改会导致O(n)的时间复杂度 所以我们要特判两种情况(别问我我不知道为什么) 1.sqrt(max)=sqrt(min) 这种情况说明开根后这段区间都是一个数,等
阅读全文
摘要:题意:支持合并,求块内K小数 对于 100%的数据 n≤100000,m≤n,q≤300000 思路:对于每一个块建立一棵动态开点的线段树,暴力(启发式?)合并后二分下就行了 merge用函数的方式写因为懒得讨论x,y其中一个为0的情况,反正是把节点y并到x上 为什么这么暴力都不T?大概是因为随机数
阅读全文
摘要:题意:对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数。 给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对数。 N<=100000 M<=50000 思路:树套树即可,第i棵树维护前i位中1-j的个数,支持区间求和 外
阅读全文
摘要:题意: 就像人类喜欢跳格子游戏一样,FJ的奶牛们发明了一种新的跳格子游戏。虽然这种接近一吨的笨拙的动物玩跳格子游戏几乎总是不愉快地结束,但是这并没有阻止奶牛们在每天下午参加跳格子游戏 游戏在一个R*C的网格上进行,每个格子有一个取值在1-k之间的整数标号,奶牛开始在左上角的格子,目的是通过若干次跳跃
阅读全文
摘要:题意:在二维坐标系中有一些带权值的点,要求用一个长宽指定不能互换的框套住其中的一些,使得它们的权值和最大。 n<=10000 x,y<=2^31 思路:首先按X排序,将Y坐标离散化,X坐标用扫描线框定,每个点(x,y)在x中只对y有a[i]的贡献,y+h有-a[i]的贡献,线段树(树状数组更好写)维
阅读全文
摘要:题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列。 n<=200000 思路:顺序来只能用splay维护 考虑倒序,对于插入到第K个位置,在线段树二分第K个0的位置,类似于主席树 将其插入后将这个位置修改为已经有数 单点修改
阅读全文
摘要:题意:在一棵N个节点,有边权的树上维护以下操作: 1:单边修改,将第X条边的边权修改成Y 2:区间取反,将点X与Y在树上路径中的所有边边权取反 3:区间询问最大值,询问X到Y树上路径中边权最大值 n<=10000 CAS<=20 思路:做了2天,改出来的一刻全身都萎掉了 边权转点权,点权就是它到父亲
阅读全文
摘要:题意: 给定一棵有n个节点的无根树和m个操作,操作有2类: 1、将节点a到节点b路径上所有点都染成颜色c; 2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。 请你写一个程序依次完成这m个操作。 数N<=10^5,操作
阅读全文
摘要:题意: 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个 操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 对于 100% 的数据, N
阅读全文
摘要:题意:a[i]表示从第i个车站可以一张票到第[i+1,a[i]]这些车站;p[i][j]表示从第i个车站到第j个车站的最少的票数,现在要求∑dp[i][j](1tree[p].s then tree[p]:=tree[ptree[p].s then tree[p]:=tree[p>1; 27 build(l,mid,p>1; 40 t:=0; 41 if (x>=l)and(yt then ...
阅读全文
摘要:给定一个循环数组a0, a1, a2, …, an-1,现在对他们有两个操作: Inc(le, ri, v):表示区间[le, ri]范围的数值增加v Rmq(le, ri):表示询问区间[le, ri]范围内的最小值 注意,这个是循环数组,所以如果n=5, le=3, ri=1,那么询问的是a3,
阅读全文