
离散化、分治
离散化
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 · 407 阅读 · 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 · 156 阅读 · 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 · 130 阅读 · 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 · 296 阅读 · 0 评论 -
亚特兰蒂斯【线段树+扫描线+离散化】
亚特兰蒂斯【线段树+扫描线+离散化】POJ1151、ACwing247题目:有几个古希腊书籍中包含了对传说中的亚特兰蒂斯岛的描述。其中一些甚至包括岛屿部分地图。但不幸的是,这些地图描述了亚特兰蒂斯的不同区域。您的朋友 Bill 必须知道地图的总面积。你自告奋勇写了一个计算这个总面积的程序。输入格式:输入包含多组测试用例。对于每组测试用例,第一行包含整数 nn,表示总的地图数量。接下来 n 行,描绘了每张地图,每行包含四个数字 x1,y1,x2,y2(不一定是整数),(x1,y1) 和原创 2022-03-08 17:29:18 · 1056 阅读 · 0 评论 -
奇偶游戏【离散化+并查集】
奇偶游戏【离散化+并查集】POJ1733、ACwing239#include<bits/stdc++.h>using namespace std;#define int long longconst 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 · 3900 阅读 · 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 · 236 阅读 · 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 · 273 阅读 · 0 评论