随笔分类 - ACM-数据结构-线段树
摘要:模板题目:here 题意:给了一个数组,有两种操作:0,x,y,把【x,y】之间的数都开平方;1,x,y,询问【x,y】之间的所有数的和 AC_Code: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #incl
阅读全文
摘要:推荐一个大佬的视频:here 模板题:P3384 【模板】轻重链剖分 模板: 1 #include <bits/stdc++.h> 2 typedef long long ll; 3 using namespace std; 4 const int maxn = 1e5+5; 5 6 //dfs序可
阅读全文
摘要:Just h-index 题意:输入第一行给了\(n\),\(q\),代表有\(n\)个数\(q\)次询问,第二行给出这\(n\)个数,每次询问一个区间,答出一个最大的数\(h\)使得这个区间里大于等于\(h\)的数的个数大于等\(h\)。 题解:见代码吧,比较好理解的,主席树 AC_Code: 1
阅读全文
摘要:Balance of the Force 题意:有两个阵营,分别为光明和黑暗,现在有n个骑士,每个骑士都能选择加入黑暗或者光明的阵营,加入后的能力值分别为D和L,已知有m对骑士不愿意在同一个阵营,请问如何分配,能使得能力最高的骑士和能力最低的骑士之间的能力差值最小? 题解:(参考大佬博客) 对于差值
阅读全文
摘要:Wi Know 题意:在字符串中找ABAB形的子序列,输出字典序最小的AB 题解:枚举每个位置作为B1,在该位置与这个字符的下一个位置B2之间查找最小的A2,而在B1之前,所有字符都可以作为A1,已经把它们的下一个A2放到了线段树里。 AC_Code: 1 #include <bits/stdc++
阅读全文
摘要:P3919 【模板】可持久化线段树 1(可持久化数组) AC_Code: 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=1e6+10; 5 const int mo
阅读全文
摘要:扫描线求面积的并:题目 模板: 1 #include <iostream> 2 #include <algorithm> 3 using namespace std; 4 typedef long long ll; 5 const int maxn = 210; 6 int n; 7 double
阅读全文
摘要:AC_Code 1 #include <iostream> 2 #include <cstdio> 3 #include <vector> 4 #include <cstring> 5 #include <algorithm> 6 using namespace std; 7 typedef lon
阅读全文
摘要:简易版第k大(权值线段树) 比较简单的权值线段树模板题,主要用来学一下动态开点 一般权值线段树模板AC_Code 1 include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 1
阅读全文
摘要:题意:有一个长度为m的计数数组a,初始均为0,并给定前n个操作x表示让a[x]加1. 现在还有一些操作,一个操作是在a[1~m]中找一个a[p]值最小的位置p(有多个则取最小的满足条件的p)使得a[p]加1,现在有q个询问,问第k次操作时的p. 首先考虑把前n次操作后的a数组按照a[i]的值从小到大
阅读全文
摘要:Petya and Array 题意:给你n个数,问有多少个区间的和的值小于t 分析:区间和问题,常常用到前缀和来进行预处理,所以先预处理出前缀和数组sum sum[i]代表前i个数的和,那么sum[i]的贡献就是, 当i<k<=n时,存在多少个k,使sum[k]<t+sum[i],也就是求在[i+
阅读全文
摘要:题意:Pavel 将要举行一个聚会,他想确切地邀请k个人参加。他有n个朋友,并且他已经决定按什么顺序打电话和邀请他们,每个朋友会回复他两个值 l 和 r,代表如果Pavel准备邀请的人数在[ l, r ] 之间他就会参加。Pavel一旦集合了所需的人数,就会立刻开启聚会,不会给其余的朋友打电话。询问
阅读全文
摘要:AC_Code 1 //权值线段树: 2 //区间的值是这段值域里的个数的线段树 3 //叶子结点的值 是这个数在序列里出现的次数 4 //能够比较容易实现平衡树的一系列操作 5 //权值线段树就是把线段树的每个点权权值线段树就是把线段树的每个点权,赋予一定的含义,比如数字出现的次数,数值前缀出现的
阅读全文
摘要:Mayor's posters(线段树+离散化+lazy) 题目大意:在墙上贴海报,然后很多海报,一层又一层,问你最后可以看到多少张海报。 题目分析:数据范围很大,普通的线段树肯定超时+超内存,所以要用到离散化,离散化有基础的和稍微复杂一点的,然后这题要用到稍微复杂一点的,离散化简单的来说就是只取我
阅读全文
摘要:Apple Tree (dfs序+线段树) 1 /*dfs+线段树(单点修改+区间查询)*/ 2 #include "iostream" 3 #include "vector" 4 #include "map" 5 #include "cstdio" 6 #include "cstring" 7 8
阅读全文
摘要:线段树 单点修改,区间查询 1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long ll; 4 const int maxn = 50010; 5 typedef long long ll; 6 int cnt[ma
阅读全文