线段树
Pikachu_Yj
这个作者很懒,什么都没留下…
展开
-
二维线段树模板
解析待写例题:2020 CCPC Wannafly Winter Camp Day5 I 题代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e3+10;int n, m1, m2;int x, y, xl, xr, yl, yr;ll w;...原创 2020-02-02 20:55:09 · 203 阅读 · 0 评论 -
2019 ICPC Asia Yinchuan Regional 部分题解
传送门G 题题目 :、并且 p 是素数, 定义成初始ai = 1, 有两种操作:区间乘,将区间 (l,r)乘 x , 区间查询解法:查询的是区间内 素数的最大幂数对 2,3,5,7 分别维护一颗线段树,区间加、区间取 max 即可。#include<bits/stdc++.h>using namespace std;const ...原创 2019-12-04 23:20:40 · 474 阅读 · 0 评论 -
Codeforces Global Round 5 A B C1 C2 D
Codeforces Global Round 5A: 偶数直接除2, 余下偶数个奇数,一半向上取整,一半向下取整#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e4+10;int n;int a[N];int vis[N];int main(){ ...原创 2019-10-22 20:17:28 · 140 阅读 · 0 评论 -
POJ - 2528 Mayor's posters 线段树区间修改 + 离散化
传送门题意:给出一面墙,给出n张海报贴在墙上,每张海报都覆盖一个范围,问最后可以看到多少张海报题解:每次贴海报, 都可能将前面的海报给覆盖掉, 这样考虑好像有点复杂, 那么不防反向搞一下, 从最后一张海报往前贴, 当现在要贴海报的区间,存在一个空白域, 那么这张海报就可以贴,ans++, 将此区间标记为1,用线段树维护一下区间最小值(值只有 0 和 1), 搞一下就好。等等,l , ...原创 2019-09-11 22:38:12 · 133 阅读 · 0 评论 -
2019 徐州网络赛 B E 线段树
B. so easy题意:初始你有 n 个数, 1 到 n 。你有两个操作 1 x 代表删除 x , 2 x 代表查询第一个大于等于 x 的数题解: n 很大, 所以不能建 1 到 n 的线段树, 但是执行的操作只有1e6, 对每次操作选取 x, x+1, 将选取的点离散化建线段树,对于每次操作 1 , 删除 x, 对于操作 2 , 查询第一个大于等于 x 的数#includ...原创 2019-09-07 20:54:49 · 155 阅读 · 0 评论 -
2019长沙学院暑假集训队第二次校赛
A、CCSU数位dp,dp[i] [sta] [lim] 第 i 位, sta = 0 代表 第 i-1 位不是 c, sta = 1 表示 第 i-1 位是 c, sta = 2 表示前面是cc,sta = 3 表示前面是 ccs, sta = 4 代表前面是ccsu。sta = 4 之后 可以随便填。dp[i] [sta] [lim] 表示前 i -1 已经填好的合法方案数。#i...原创 2019-08-16 21:32:12 · 143 阅读 · 0 评论 -
Comet oj C1016 [欢乐赛]茶颜悦色 线段树区间更新 + 扫描线
传送门来自于题解:由题设 k 为正方形边长。首先我们可以通过确定正方形的底边来确定正方形。比如底边是由[x, y],[x + k, y]两点连成的边,那么这样的底边可以确定一个由 [x, y],[x + k, y],[x, y + k],[x + k, y + k]四个点组成的正方形。假设我 们用左下角的点[x, y]来代表这个正方形(下同)。 现在我们来考虑某个点(a,b)可以被怎样的正方...原创 2019-08-20 18:31:37 · 177 阅读 · 0 评论 -
牛客小白月赛16 小石的妹子 线段树
小石的妹子官方题解:因为有两维的限制,所以我们先按 ai 从大到小排一下序,对于排序后的第 i 个妹子,她的排名就是 max{rk[j]}+1(bj>bi),那么我们把排名 bi 当成下标,把 rki 当成值,用线段树维护一下区间 max 即可。将bi排序,将每个妹子对应的bi变成排序后bi的编号,,对ai进行从大到小排序。i 从 0 到 n 遍历,对于每个妹...原创 2019-07-15 13:16:49 · 198 阅读 · 0 评论 -
牛客小白月赛16 小阳买水果 线段树
小阳买水果从大佬处学习的求出ai的前缀和,用线段树维护前缀和最大值,从 0 遍历到 n ,在线段树中找到大于sum[i]的最远的一个编号,每次先往右找,保证找到的值是最远。然后取最远距离 - i 的最大值。#include<bits/stdc++.h>using namespace std;#define Mid ((l+r)>>1)#define ...原创 2019-07-15 12:22:55 · 248 阅读 · 0 评论 -
RMQ 算法 Balanced Lineup
Balanced LineupRMQ:RMQ(Range Minimum/Maximum Query),即区间最值查询,这是一种在线算法,所谓在线算法,是指用户每次输入一个查询,便马上处理一个查询。RMQ算法一般用较长时间做预处理,时间复杂度为O(nlogn),然后可以在O(1)的时间内处理每次查询。f[i][j]表示从i开始长度为((1<<j)-1)的区间最值。f[i...原创 2019-07-10 21:12:13 · 198 阅读 · 0 评论