随笔分类 -  线段树

摘要:题目链接:https://www.acwing.com/problem/content/263/ 思路:跟 线段树维护区间最大连续区间的类似思路 ld为前缀最长连续1 rd为后缀最长连续1 d为当前区间内最长连续的1 注意的点就是 1.多了一个区间修改 注意传lazy 2.只有当左区间满了1 才能将 阅读全文
posted @ 2021-04-25 16:08 canwinfor 阅读(64) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/problem/217803 思路:首先考虑如何求出所有的得分情况,可以发现每个p[i]对应的a[p[i]] 是肯定会出现的 而将p[i] 排序后 每段p[i] p[i+1] 中的最大值也是会出现的, 其他都不会出现, 那么这里就考虑 阅读全文
posted @ 2021-02-14 11:51 canwinfor 阅读(159) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/9983/E 思路: 把问题转换成 求区间中的数的下一个与当前数相同的数的最小值, 即区间最小值如果 小于r的话 那么就证明当前区间至少有两个相同的数 用nxt[] 记录与当前数相同的下一个数的位置,last 为与当前 阅读全文
posted @ 2021-02-12 11:47 canwinfor 阅读(58) 评论(0) 推荐(0)
摘要:acwing 树状数组 线段树 题目链接:https://www.acwing.com/problem/content/245/ ###K 类似于已知逆序对 还原原数组的过程, 从倒序开始还原, 本质是求数组中的第k小值 那么用树状数组的话就需要通过二分来做, 通过query(mid)>=k 来一直 阅读全文
posted @ 2021-02-04 15:10 canwinfor 阅读(37) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/edu/course/2/lesson/5/4/practice/contest/280801/problem/D 思路:维护 ans 和sum 两个值 ans为当前区间段的答案,sum为当前区间和 那么每次查询的时候即是 用当前区间的答案加上当 阅读全文
posted @ 2020-12-28 22:20 canwinfor 阅读(169) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/1440/my题意:两种操作 一种是 1~x 取a[i]=max(v,a[i]) 第二种操作是给 y的钱 从x~n 每一道菜 价钱a[i] 能买就买并扣钱 否则就跳过 查询 每次买了多少道菜思路:线段树维护 查询的时候要用到区间和 阅读全文
posted @ 2020-11-18 20:27 canwinfor 阅读(148) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/problem/205837 思路:要的是因子个数,考虑到给的a[i]很小 10 以内的质数只有2 3 5 7 那么考虑将每一个数都质因数分解 然后最后总的方案数 2的个数+1 * 3的个数+1 *5的个数+1 *7的个数+1 即为总 阅读全文
posted @ 2020-10-16 16:26 canwinfor 阅读(136) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/914/problem/D 题意:给定 2个操作, 1是单点修改某个数, 2是问区间中的数能否最多修改一个数的情况下使得区间的gcd=x 思路:考虑线段树维护 每次查询的时候分 左右两个区间,如果查询到的区间长度为1就返回1 因为 阅读全文
posted @ 2020-10-15 23:00 canwinfor 阅读(86) 评论(0) 推荐(0)
摘要:题目链接:https://codeforces.ml/contest/1250/problem/C 题意:自己任意选定一个区间 ,然后每天花费k钱,给定一些区间,如果选定的区间包含这些区间就可以获得这些 区间的利润,问如何选定区间才能使得钱最多思路:考虑通过所有的起点和终点来 得到所有的答案 那么就 阅读全文
posted @ 2020-10-15 18:50 canwinfor 阅读(166) 评论(0) 推荐(0)
摘要:题目链接:https://codeforc.es/problemset/problem/920/F 题意: 有2种操作 第一种是 在l,r 区间内的数全部换成 这个数的因子个数 如 6 有1 2 3 6 所以6要换成4 第二种是查询 区间l r 内的和 思路:很套路的一种题目, 因为变因子数的操作不 阅读全文
posted @ 2020-08-17 01:34 canwinfor 阅读(125) 评论(0) 推荐(0)
摘要:题目链接:https://ac.nowcoder.com/acm/contest/5803/C 思路:根据前两个操作 很容易想到要用线段树来维护一个差分数组 用一个mx 来维护差分区间的最大值即可 要注意的是 最大值的时候取绝对值的时机不要出错 还有差分建树要1到n+1 剩下关键就是如何要维护区间的 阅读全文
posted @ 2020-06-02 23:03 canwinfor 阅读(187) 评论(0) 推荐(0)