11 2024 档案
摘要:原题链接:https://www.luogu.com.cn/problem/P3373 题意解读:对于序列a[n],支持三种操作:1.对区间每个数乘上一个数 2.对区间每个数加上一个数 3.求区间和 解题思路:由于支持乘、加两种区间修改操作,是线段树的另一种典型应用:多个懒标记 显然,这里需要两个懒
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1253 题意解读:对于一个序列a[n],支持三种操作:1.将区间[l,r]所有数设置为x;2.将区间[l,r]所有数加上x;3.查询区间[l,r]的最大值 解题思路:典型的线段树求解区间问题。 线段树节点需要维护如下关键
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1438 题意解读:给定序列a[n],支持两种操作:1.给区间[l,r]每个数增加一个对应位置等差数列的元素,首项k,公差d;2.查询第x个元素值 解题思路:直接用线段树求解。 要实现区间修改,需要引入懒标记,而这里修改的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3870 题意解读:有n个数的序列,初始都是0,支持两种操作:将区间[l,r]内所有数异或1,求区间[l,r]内1个个数,输出所有求区间1的个数操作的结果。 解题思路: 灯的开关可以用0,1表示,改变灯的状态可以用异或操作
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3372 题意解读:我们知道,对于一个序列,单点修改区间求和或者区间修改单点求和都可以借助树状数组,而求区间最值可以借助ST表,如果既要进行区间修改,又要进行区间求和或者求最值等其他查询操作,且复杂度都在O(logn),可
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2161 题意解读:本题前面形式化描述已经足够清晰。 解题思路: 要判断线段之间是否有冲突(包含或者交叉),可以借助set,参考:https://www.cnblogs.com/jcwy/p/18447333 只不过这里要
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P5677 题意解读:所谓好的配对,通过分析公式∣ax−ay∣≤∣ax−ai∣(i≠x),可以得知就是一个ax与其差的绝对值最小的形成的配对,在数轴上就是距离ax最近的点ay,配对是下标(x,y),给定若干个区间[l,r]
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1908 题意解读:求逆序对,前面介绍过归并排序的做法,参考:https://www.cnblogs.com/jcwy/p/184077,这里介绍树状数组的做法。 解题思路: 设数组a[n]里的整数只包括1~n,显然对于此
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3368 题意解读:树状数组应用-区间修改,单点求值 解题思路: 设原数组为s[N],其差分数组为a[N] 操作一:区间修改 要对s[x] ~ s[y]每个数增加k,相当于对a[x]加k,对a[y + 1]减k,O(n)的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3374 题意解读:树状数组模版:单点修改,区间求值。 解题思路: 树状数组-Binary Index Tree可以动态维护一组数,可以O(logn)的修改一个数,也可以O(logn)的计算一段区间的和。 思考一下朴素做法
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2251 题意解读:求窗口m内的最小值 解题思路:直接用单调队列求解即可 100分代码: #include <bits/stdc++.h> using namespace std; const int N = 100000
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1878 题意解读:n个男女排列一行,每人舞蹈技术是ai,每次找到相邻男女舞蹈技术差值绝对值最小的一对出列,输出每对出列的人员编号。 解题思路: 设初始有8人编号为:1 2 3 4 5 6 7 8 将1 2, 2 3, 3
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4053 题意解读:n个建筑有修理时间t1,报废时间t2,要求在合理顺序尽可能多的抢修建筑。 解题思路: 贪心思路: 1、优先抢修报废时间最短的建筑,可以将建筑按t2从小到大排序,再遍历每一个建筑 2、先假设当前建筑可以抢
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1631 题意解读:两个长度为n的单调不降的有序序列,各取一个数相加,计算最小的n个和。 解题思路: 设两个序列为a[N], b[N] 和最小的为a[1] + b[1] 和第二小的可能有两种:a[1] + b[2]或者a[
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2085 题意解读:有n个函数,函数中x取值>=1,计算所有函数能得到的值中最小的m个。 解题思路: 函数中x取值是>=1的整数,因此每个函数的值是f(1),f(2),f(3)....,是一个递增序列,题目本质上是要从n个
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1168 题意解读:中位数就是位于中间的数,前1个数的中位数是第1个,前3个数的中位数是第2个,前5个数的中位数的第3个...以此类推。 所以,此题本质上就是动态维护一组数,每1/3/5...等奇数个取第k小的数,取一次后
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2827 题意解读:初始n个数,每次取最大值x,根据u/v分成两部分:x * u / v,x - x * u / v,然后其余数都增加q,整个过程重复m次。 输出有两类数据:第t,2t,3t...次取出的最大值;最后剩余的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2168 题意解读:把单次替换成k进制字符串,使得替换后文本内容最短,典型的哈夫曼编码应用。 解题思路: 要把单词转成k进制字符串,根据哈夫曼编码的原理,可以依次将k个出现次数最少的单词进行合并,最后得到一棵树,每个非叶节
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1801 题意解读:动态维护一组序列,并随时可以求第k小的值,每次求第k小的顺序是递增的,比如第一次取第1小,然后是第2小,以此类推。 解题思路: 对于求第k小的问题,已经介绍过几种方案: 1、快选算法,每次查询时间复杂度
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3378 题意解读:实现二叉堆。 解题思路: 二叉堆本质上一棵完全二叉树,根节点称为堆顶,根据特性不同分为有两种: 大根堆:所有父节点的值大于子节点,根节点最大 小根堆:所有父节点的值小于子节点,根节点最小 主要作用:动态
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P6824 题意解读:已知整数序列a[i],i在1~n,有整数k,求一个整数x,要求a[i] ^ x <= k,使得符合要求的a[i]数量最多,求这个数量。 解题思路: 1、确定x的范围 由于a[i] ^ x <= k,因此
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3369 题意解读:平衡树的基本操作,模版题。 解题思路: 1、二叉搜索树-BST 二叉搜索树满足这样的性质:每一个节点的权值大于它的左儿子,小于它的右儿子。 对BST进行中序遍历,将得到一个从小到大的有序序列,因此BST
阅读全文