离散化、分治
离散化
Alan_Lowe
世上没有白走的路,每一步都算数!——狂神
展开
-
快速幂【史上最详细最简单讲解快速幂】
快速幂【史上最详细最简单讲解快速幂】 利用二进制来理解一下快速幂 比如我要求一个数a的13次方,13用二进制数表示为: 0b1101 那么是不是就意味着最终的结果是a的1(1101的最右边)次方乘上a的4次方再乘上a的8次方,即: a13=a1 a4 a8 那么我们将13一直右移就能检查到哪个位置是1,如果是1则需要乘上a的这么多次方。 def qpow(x,y): ans = 1 base = x while y: if y & 1:原创 2022-04-08 14:48:50 · 390 阅读 · 0 评论 -
逆序对的数量【归并排序】
逆序对的数量【归并排序】 利用归并排序可以记录逆序数: #include "bits/stdc++.h" using namespace std; #define int long long #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n,ans; int x[100005],xx[100005]; //原数组和辅助数组 void merge_sort(int l,int r){ if(l >= r原创 2021-09-28 20:12:03 · 141 阅读 · 0 评论 -
数的范围【二分】
数的范围【二分】 ac代码: #include "bits/stdc++.h" using namespace std; #define int long long #define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); int n,q; int x[100005]; void solve(){ int k; cin>>k; int l = 0,r = n - 1,from = -1,to = -1原创 2021-10-06 10:54:12 · 119 阅读 · 0 评论 -
窗内的星星【线段树+扫描线+离散化+lazy标记】
窗内的星星【线段树+扫描线+离散化+lazy标记】 POJ2482、ACwing248 题目: 在一个天空中有很多星星(看作平面直角坐标系),已知每颗星星的坐标和亮度(都是整数)。 求用宽为 W、高为 H 的矩形窗口(W,H 为正整数)能圈住的星星的亮度总和最大是多少。(矩形边界上的星星不算) 输入格式: 输入包含多组测试用例。 每个用例的第一行包含 3 个整数:n,W,H,表示星星的数量,矩形窗口的宽和高。 然后是 n 行,每行有 33 个整数:x,y,c,表示每个星星的位置 (x,y) 和亮度。 没有两原创 2022-03-08 23:23:39 · 272 阅读 · 0 评论 -
亚特兰蒂斯【线段树+扫描线+离散化】
亚特兰蒂斯【线段树+扫描线+离散化】 POJ1151、ACwing247 题目: 有几个古希腊书籍中包含了对传说中的亚特兰蒂斯岛的描述。 其中一些甚至包括岛屿部分地图。 但不幸的是,这些地图描述了亚特兰蒂斯的不同区域。 您的朋友 Bill 必须知道地图的总面积。 你自告奋勇写了一个计算这个总面积的程序。 输入格式: 输入包含多组测试用例。 对于每组测试用例,第一行包含整数 nn,表示总的地图数量。 接下来 n 行,描绘了每张地图,每行包含四个数字 x1,y1,x2,y2(不一定是整数),(x1,y1) 和原创 2022-03-08 17:29:18 · 1030 阅读 · 0 评论 -
奇偶游戏【离散化+并查集】
奇偶游戏【离散化+并查集】 POJ1733、ACwing239 #include<bits/stdc++.h> using namespace std; #define int long long const int N = 10000; struct query{ //记录需要查询的m个序列 int l,r,ans; } v[5005]; int father[N + 5],dis[N + 5],a[N + 5],b[N + 5];原创 2022-03-03 14:52:13 · 3874 阅读 · 0 评论 -
程序自动分析【离散化+并查集】
程序自动分析【离散化+并查集】 NOI2015、BZOJ4195、ACwing237 #include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> const int N = 200000; int father[N + 5],a[N + 5],b[N + 5]; //分别用来存储离散化后每个结点的代标结点、初始输入点、去重后的点 int n,k_a,原创 2022-03-02 22:30:16 · 224 阅读 · 0 评论 -
区间和【离散化详讲】acwing802
区间和【离散化详讲】acwing802 由于坐标太长了,开数组这样的操作是肯定行不通的,离散化的原理就是将没有操作的地方全部抹去,然后再将抹去后的序列求前缀和,即可O(1)时间查询我们需要的区间信息,话不多说,直接上代码吧: #include<bits/stdc++.h> using namespace std; #define int long long #define PII pair<int,int> #define IOS ios::sync_with_stdio(fals原创 2021-10-08 20:34:39 · 258 阅读 · 0 评论