ACM-线段树
文章平均质量分 53
acm
Echo_ac
不知未来怎样,现在一定全力以赴
展开
-
[CF522D]Closest Equals——线段树+离线技巧+思维
题目传送门思路应该能想到我们需要求出每一个 aia_iai 上一次出现的位置 pre[i]pre[i]pre[i] , 对于每一个询问区间 [l,r][l,r][l,r] 我们需要求出 i−pre[i]i-pre[i]i−pre[i] 的最小值 (pre[i]≥l)(pre[i] \geq l)(pre[i]≥l)。线段树维护最小值即可问题1:我们可以将每个 pre[i]pre[i]pre[i] 位置的值换成 i−pre[i]i-pre[i]i−pre[i] ,但是每次在线暴力置换一原创 2022-03-10 10:42:08 · 247 阅读 · 0 评论 -
代码源每日一题Div1 108数数
题目链接思路我们用树状数组维护区间和,将数组 aaa 带着下标,按照值大小从小到大排序,再将每个询问,按照 hhh 值从小到达排序。然后我们遍历每个询问,对于当前的 hhh ,将数组 aaa 中小于等于的 hhh的数的下标 pospospos 进行,add(pos,1)add(pos,1)add(pos,1)。这个询问的答案就是 ask(ri)−ask(li−1)。ask(r_i) - ask(l_i-1)。ask(ri)−ask(li−1)。代码#include<bits/stdc++.原创 2022-03-03 16:11:14 · 399 阅读 · 0 评论 -
NC19427 换个角度思考——思维+树状数组/线段树
题目链接思路这道题思路挺新奇的,树状数组维护前缀和。先存下输入的每个询问,再按照k的值从小到大排序。对于a数组开一个结构体数组,存下下标和值,按照值从小到大排序。对于每一个kik_iki,将小于等于kik_iki的值的位置add 1。然后这个询问的答案就是ask® -ask(l-1)。因为已经按照k从小到大排序了,所以之前插入的k对之后没有影响AC代码#include<bits/stdc++.h>#define lp p<<1#define rp p<<原创 2021-09-24 16:52:14 · 166 阅读 · 0 评论 -
AcWing 数星星(线段树树状数组 模板题)
题目链接文章目录思路:AC代码:思路:这道题因为是按照y坐标增序给出的,所以前面给出的星星,一定在后面的星星的 "下方”, 对于某个星星就判断前面的星星有多少个的x坐标小于等于这个星星,就能判断这个星星是多少级的AC代码:最近在学线段树,给出线段树做法的代码#include<iostream>const int N = 1e5+9;int ans[N];using namespace std;struct node{ int l,r; int sum;}原创 2020-09-13 10:50:32 · 194 阅读 · 0 评论