模型——二维偏序与三维偏序
蒟蒻不会二维偏序
二维偏序
二维偏序的定义
定义:形如xi<xjx_i<x_jxi<xj且yi<yjy_i<y_jyi<yj之类的约束条件,我们可以称为二维偏序。逆序对,最长上升子序列就是一个非常经典的二维偏序。
相关做法的思考
暴力?吃桃吧你。
如果按照暴力想法,我们O(n2)O(n^2)O(n2)的时间枚举i,ji,ji,j这样太慢了。
处理第iii位时,我们已经处理过[0,i−1][0,i−1][0,i−1]的数量,那么我们可不可以用一个数据结构记录一下之前的情况呢?
这就引出了二维偏序。
我们把第一维从小到大排序,然后遍历,将第二维插入树状数组中,每次查询,即可解决问题。
其中,因为只拥有这些约束条件,我们需要离散化,减小空间
例题
就以逆序对作为例子:
先将这个序列离散化,找出这个数的大小排名,反向进行遍历即可。注意查询是查询前k-1区间内的和,即求出贡献。
#include<bits/stdc++.h>
#define MAXN 500050
#define ll long long
#define in read()
using namespace std;
int n,a[MAXN],b[MAXN],t[4*MAXN],len;inline int read(){int x=0,f=1;char c=getchar();while(c<'0' or c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0' and c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}return x*f;
}
int lowbit(int x){return x&(-x);
}
void update(int x,int y){while(x<=n){t[x]+=y;x+=lowbit(x);}
}
ll query(int x){ll sum=0;while(x){sum+=t[x];x-=lowbit(x);}return sum;
}
void decrete(){sort(b+1,b+n+1);len=unique(b+1,b+n+1)-b-1;
// for(int i=1;i<=n;i++)
// b[i]=lower_bound(b+1,b+len+1,a[i])-b;//大意了
}int finds(int x){return lower_bound(b+1,b+len+1,x)-b;}int main(){n=in;for(int i=1;i<=n;i++)a[i]=b[i]=in;decrete();ll sum=0;for(int i=n;i>=1;i--){int k=finds(a[i]);update(k,1);sum+=query(k-1);}cout<<sum<<'\n';return 0;
}
三维偏序
咕咕咕……(不会CDQ的我就是屑)
模型——二维偏序与三维偏序相关推荐
- 计算机动画可分为二维和三维动画,二维动画与三维动画设计的区分
二维动画与三维动画不仅仅只是名字不同,在制作过程中有很多的不同,我们一般只是充当欣赏动画的人,但我们必须了解相关的一些常识.三维动画现今已经进入影音行业,而且已经成为了主打军,一般我们看到的动画片都是 ...
- 二维张量 乘以 三维张量_通量vs张量流误解
二维张量 乘以 三维张量 TensorFlow is the 800-pound Gorilla of Machine Learning that almost everybody in the fi ...
- 机动目标跟踪——匀加速运动CA模型(二维)
机动目标跟踪--匀加速运动CA模型(二维) 原创不易,路过的各位大佬请点个赞 WX: ZB823618313 机动目标跟踪--目标模型概述 机动目标跟踪--匀加速运动CA模型(二维) 1. 对机动目标 ...
- 正确区分二维动画和三维动画的区别!
目前市场上,对二维动画和三维动画的需求越来越多,那么这两种动画在表现形式有什么不同,我们又该如何区分呢?下面就来了解一下吧. 首先,我们先了解一下二维动画 二维动画是根据某个场景的人和物的画面绘制,然 ...
- 20万套机械、模具、数控、工艺夹具、减速器、机器人、液压系统、车辆工程、PLC 、单片机……毕业设计、课程设计、说明书 论文、二维图、三维图、开题报告、任务书、ppt、文献翻译……分享……持续更新!
部分清单如下: 自动立体车库结构设计(说明书 CAD图纸 开题报告 任务书 外文翻译--) 玉米秸秆粉碎机毕业设计 论文 车床主轴箱课程设计 R175柴油机机体自动加工线上多功能液压机械手设计(说明书 ...
- 计算机动画可分为二维和三维动画,二维动画和三维动画区别在哪
原标题:二维动画和三维动画区别在哪 对于二维动画的印象,许多人可能是儿时记忆中的<葫芦娃>,对于三维动画,也许有人能想到<秦时明月>,可是除了直观上的区别,二维动画和三维动画具 ...
- 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
[Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...
- R使用tsne进行高维数据可视化实战:二维可视化、三维可视化
R使用tsne进行高维数据可视化实战:二维可视化.三维可视化 t-SNE是一种非常强大的技术,可以用于多维数据中的可视化分析(寻找模式).它对复杂多维数据的可视化能力是显而易见的,它以无监督的方式对数 ...
- Python使用tsne进行高维数据可视化实战:二维可视化、三维可视化
Python使用tsne进行高维数据可视化实战:二维可视化.三维可视化 # 绘制二维可视化图像并添加标签字符函数 def plot_embedding(data, label, title):x_mi ...
- python二维图颜色函数_Python绘图之二维图与三维图详解
各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男" 1.二维绘图 a. 一维数据集 用 Numpy ndarray 作为数据传入 ply 1. import ...
最新文章
- CUDA编程遇到的问题
- sql server 内存初探
- MAC OS中的dylib 的@rpath和@loader_path小问题
- 【杂项】原来有两种单引号(单引号和反引号)
- Python学习笔记之Windows下通过pip安装PyMySQL
- 【HDU5156】Harry and Christmas tree,两种离线的做法
- 计算机系十周年聚会邀请函,毕业十周年同学聚会邀请函
- Tornado框架的初步使用
- mysql.data已拥有为,MYSQL LOAD DATA INFILE忽略重复行(自动增量作为主键)
- 自由软件江湖里的码头和规矩
- CTF —— 网络安全大赛
- 很好看的source insight配色方案
- 第一届腾讯社招广告大赛总结
- 怎样用计算机将二进制转换成十进制,二进制如何转换为十进制?
- NC65与蓝凌OA审批集成
- 问题 F: 解救小哈
- Julia发布全功能调试器:4大新功能问世
- 年前找工作好,还是年后找工作好?求职需警惕,小心陷入羊群效应
- ExoPlayer修改播放器UI
- 北京世纪安图在汉参加地理国情监测技术与应用研讨会