Luogu3810 三维偏序(陌上花开)

洛谷 3810: 三维偏序 LUOGU 3810: 陌上花开DescriptionData思路n维偏序n维偏序的时间复杂度.三维偏序的暴力做法.CDQ分治 ——三维偏序 原题传送门 Description 因为洛谷题目…好像没法复制,所以简单阐述题目大意. 有nnn个元素,第iii个元素xix_ixi​有333个属性ai,bi,cia_i,b_i,c_iai​,bi​,ci​,(a,b,c∈[1,k]a,b,c \in [1... 阅读详情

原题链接:https://www.luogu.org/problemnew/show/P3810

【模板】三维偏序(陌上花开)

题目背景

这是一道模板题

可以使用bitset,CDQ分治,K-DTree等方式解决。

题目描述

有 n n 个元素,第i 个元素有 ai a i 、 bi b i 、 ci c i 三个属性,设 f(i) f ( i ) 表示满足 aj≤ai a j ≤ a i 且 bj≤bi b j ≤ b i 且 cj≤ci c j ≤ c i 的 j j 的数量。

对于 d∈[0,n),求 f(i)=d f ( i ) = d 的数量

输入输出格式
输入格式:

第一行两个整数 n n 、 k k ,分别表示元素数量和最大属性值。

之后n行,每行三个整数 ai a i 、 bi b i 、 ci c i ,分别表示三个属性值。

输出格式:

输出 n n 行,第d+1行表示 f(i)=d f ( i ) = d 的 i i 的数量。

输入输出样例
输入样例#1:

10 3
3 3 3
2 3 3
2 3 1
3 1 1
3 1 2
1 3 1
1 1 2
1 2 2
1 3 2
1 2 1

输出样例#1:

3
1
3
0
1
0
1
0
0
1

说明

1≤n≤100000,1≤k≤200000

题解

考虑使用 cdq c d q 分治,第一维直接排序搞掉,第二维 cdq c d q 搞成离线,最后一位上数据结构即可。

左半边对右半边的贡献很好统计,左边为单点加,右边为区间求和。

代码
#include<bits/stdc++.h>
using namespace std;
const int M=1e6+5;
struct sd{int p,q,r,sum,cot,id;};
bool cmp1(sd a,sd b)
{
    if(a.p!=b.p)return a.p<b.p;
    if(a.q!=b.q)return a.q<b.q;
    return a.r<b.r;
}
bool cmp2(sd a,sd b){return a.q==b.q?(a.r==b.r?a.p<b.p:a.r<b.r):a.q<b.q;}
bool operator !=(sd a,sd b){return a.p!=b.p||a.q!=b.q||a.r!=b.r;}
int sum[M],ans[M],n,tot,base=1;
sd x[M],que[M];
void in()
{
    int a;
    scanf("%d%d",&n,&a);
    while(base<a)base<<=1;
    for(int i=1;i<=n;++i)scanf("%d%d%d",&x[i].p,&x[i].q,&x[i].r);
}
void add(int v,int s){v+=base;for(;v;v>>=1)sum[v]+=s;}
int query(int le,int ri)
{
    int ans=0;le+=base;ri+=base;
    for(;le^ri^1;le>>=1,ri>>=1)
    {
        if(le&1^1)ans+=sum[le+1];
        if(ri&1)ans+=sum[ri-1];
    }
    return ans;
}
void cdq(int le,int ri)
{
    if(le==ri)return;
    int mid=(le+ri)>>1;
    cdq(le,mid);cdq(mid+1,ri);
    sort(que+le,que+ri+1,cmp2);
    for(int i=le;i<=ri;++i)
    {
        if(que[i].id<=mid)add(que[i].r,que[i].cot);
        else que[i].sum+=query(0,que[i].r+1);
    }
    for(int i=le;i<=ri;++i)
    if(que[i].id<=mid)add(que[i].r,-que[i].cot);
}
void ac()
{
    sort(x+1,x+1+n,cmp1);
    for(int i=1;i<=n;++i)
    {
        if(x[i]!=x[i-1])que[++tot]=x[i],que[tot].id=tot;
        ++que[tot].cot;
    }
    cdq(1,tot);
    for(int i=1;i<=tot;++i)ans[que[i].sum+que[i].cot-1]+=que[i].cot;
    for(int i=0;i<n;++i)printf("%d\n",ans[i]);
}
int main()
{
    in();ac();
    return 0;
}
GMSL Strapping Pins CFG0/CFG1 应用 如果 0x13.bit3 = 0, 则是链路没有 Locked,需要去排查下具体问题(通常是工作模式配置问题)如果遇到 Link 无法建立(Locked),电源没有问题的情况下,多半是加串器和解串器的工作模式不匹配。芯片在上电时,会检测这两个管脚的电压,根据不同的电压值,芯片进入到不同的工作模式。一对加串器和解串器,只要工作模式匹配得当,Link Locked,便能够正常工作。ADI 已经充分考虑了用户的需求,尽可能的降低的芯片的使用和配置复杂度。GMSL 的解串器也是类似的配置,具体请参考对应的规格书。 阅读详情

相关推荐

Keil5芯片包下载后无法识别?手把手排查教程

遇到Keil5芯片包下载后不被识别的问题别慌,常见原因包括安装路径错误或包未正确注册。通过检查Pack Installer状态和手动更新设备支持列表,轻松排查故障,确保开发环境正常运行。

weixin_35459464的博客 878

三维偏序/cdq分治/

三维偏序---cdq分治cdq分治概述三维偏序概述例题分析代码模板 cdq分治概述 cdq 分治和dp一样,是一种思想而不是具体的算法,因此 cdq 分治涵盖的范围相当的广泛,由于这样的思路最早是被陈丹琦引入国内的,所以就叫 cdq 分治了。 cdq分治可解决的问题大致可分为三类: 与点对有关的问题(三维偏序) cdq 分治优化 1D/1D 动态规划的转移(还不懂 ) 通过 cdq 分治,将一些动态问题转化为静态问题 本篇博客主要介绍和总结用cqd分治解决的三维偏序问题 三维偏序概述 三维偏序,听起来似

lijing_er的博客 3248

VS2019+EasyX图形库实战:手把手教你用C语言打造消消乐小游戏(附完整源码)

本文详细介绍了如何使用VS2019和EasyX图形库从零开始构建一个C语言消消乐小游戏。通过环境配置、数据结构设计、界面绘制、交互实现到游戏逻辑完善的完整流程,帮助开发者掌握图形编程和游戏开发的核心技巧,并附有完整源码供参考。

bush的博客 186

CDQ分治详解,一维、二维、三维偏序

如何利用CDQ分治解决偏序问题

EQUINOX1的博客 5628

Cadence安装

选择刚刚解压的E盘DVD驱动中的setup.exe文件,安装路径推荐D盘,此处会自己给你新建文件夹,我们无需手动建文件夹。但是,新产品有一些BUG(影响使用流畅性),所以我们要对17.4打补丁,补丁包同样去吴川斌的博客下载。下载阿狸狗破戒大师 我这边下载的是版本V3.2.6,同样在吴川斌的博客下载安装包,链接同上。记录一下安装过程,方便以后安装使用Cadence。破解完成后,建议将这两个软件创建快捷方式到桌面。到这里,我们已经可以正常的使用Cadence了。对光盘映像文件解压后双击,可以在我的电脑看到。

电子那些事儿 1万+

四款办公Agent实测对比:WorkBuddy、千问办公、库库AI、豆包工作怎么选

AI Agent是一种能感知环境、自主决策并执行动作的智能系统,其核心在于工具调用、状态管理与错误恢复构成的执行闭环。在办公场景中,任务边界清晰、容错率高、重复性强,使Agent成为最容易落地的方向。通过调用本地文件、脚本或办公套件,Agent能自动完成文件批量处理、文档摘要、会议纪要等重复劳动,显著提升工作效率。目前WorkBuddy、千问办公、库库AI、豆包工作等产品分别从本地操作、办公套件嵌入、知识处理、轻量助手等路线切入,用户可根据自身场景选择。

weixin_29052717的博客 521

【洛谷】P3810

排序 #数据结构 #分治。

Antonio915的博客 1204

Qt5.15.2配置安卓环境

否则,将会跳转到github,你可以自行下载解压到你设置的目录中,然后Qt会自动检测到。以上所需的工具确实有些繁多,而且如果单独下载又涉及科学上网问题,版本问题十分麻烦,好在Qt Creator 4.12之后已经可以自动下载SDK工具,NDK,基础包,openssl,以及gradle等,十分省心。回到正题,无论通过在线安装的方式,安装时勾选了Android,还是编译的方式,编译时编译了Qt Android库,想要使用Qt开发安卓应用仍然需要一些其他工作,包括安装编译安卓项目需要的SDK,NDK等。

weixin_41392061的博客 979

三维偏序-陌上花开

三维偏序-陌上花开   原题传送门:洛谷P3810 三维偏序(陌上花开) 题目大意   这是很经典的一道题了,并且可以用很多算法来解决。   有 nnn 个元素每个元素 xix_ixi​ 有 ai,bi,cia_i, b_i, c_iai​,bi​,ci​ 三个属性。设 f(i)f(i)f(i) 表示满足 (aj≤ai)∧(bj≤bi)∧(cj≤ci)∧(i≠j)(a_j \leq a_i) \land (b_j \leq b_i) \land (c_j \leq c_i) \land (i \neq j)

ID246783的博客 895

【C2000系列DSP的Bootloader详解】如何利用脚本自动合并Bin文件

本文通过OutconvertBin.py实现了 C2000 Bootloader+UserApp 的「ELF 转 BIN+BIN 合并」全流程自动化,核心优势如下: 架构适配:严格遵循 C28x 16 位大端格式,生成的 BIN 文件可直接烧录; 自动化程度高:一键完成清理、转换、合并,无需手动执行多个命令; 可追溯性:生成 CRC32 校验值,便于验证文件完整性; 量产友好:合并后的merged.bin支持一次性烧录,提升量产效率。

昔时扬尘处 183

【光伏风电功率预测】基于 ICEEMDAN + MSCNN-BiGRU-Attention 的并行预测模型

本文提出一种基于ICEEMDAN分解与多尺度深度学习的光伏/风电功率并行预测框架。针对多能源、多时间尺度、强非平稳特性带来的建模挑战,该模型首先通过改进的ICEEMDAN算法将原始功率序列分解为不同频段的IMF分量;随后为每个IMF构建包含多尺度CNN、双向GRU和注意力机制的子模型,实现局部特征提取与时序依赖建模;最后通过并行预测与重构获得最终功率输出。实验表明,该方法能有效解决模式混叠问题,提升预测精度,并支持光伏/风电的独立或联合预测部署,适用于风光联合调度等工程场景。

专注AI大模型,软件混淆,授权 155

三维偏序cdq

了解了二维偏序的$cdq$分治,三维偏序其实就是再套一维。 在用左区间更新有区间的时候,第一维和第二维都满足左边小于右边,但第三维不好判断。怎么办呢?用数状数组或线段树来维护第三维即可,其实就是二维偏序$cdq$加一点东西。

tanjunming2020的博客 1244

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

#cdq分治# [luogu P3810] 【模板】三维偏序(陌上花开)

Title [luogu P3810] 【模板】三维偏序(陌上花开) Solution 第一维sortsortsort 第二维cdqcdqcdq分治,类似归并排序 第三维树状数组 Code #include<cstdio> #include<algorithm> #include<string> #define rep(i,x,y) for(int i=x;i<=y;++i) using namespace std; const int maxn=2e5

Nowed 259

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Luogu P3810 【模板】三维偏序(陌上花开) CDQ分治 树状数组

https://www.luogu.org/problemnew/show/P3810 复习板子,重要的题就真的要写三遍???之前写过一篇博客了,不过之前写的那个板子的sort用的规则真是沙雕 #include<bits/stdc++.h> using namespace std; const int maxn=100010; int n,k,tot=0; struct...

weixin_30418341的博客 189

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Luogu P3810 三维偏序(陌上花开)___cdp分治

题目大意: 最大属性值为kkk 分析: cdp分治模板题, 一开始去重然后做cdp分治,最后讨论一下一个元素,它的重复元素的个数即可 代码: #pragma GCC optimize(3) #include <iostream> #include <cmath> #include <queue> #include <cstdio> #inclu...

生如夏花之绚烂 478

luogu P3810 三维偏序(陌上花开)cdq分治

题目链接 思路 对一维排序后,使用$cdq$分治,以类似归并排序的方法处理的二维,对于满足$a[i].b \leq a[j].b$的点对,用树状数组维护$a[i].c$的数量。当遇到$a[i].b>a[j].b$时可以更新$j$的答案,因为前半部分中剩余的点的第二维必然大于$j$点的第二维(记住我们是对第二维进行归并排序所以第二维是有序的,因此有这样的判断)。每次要记得初始化树...

weixin_30263073的博客 141

Luogu 3810 & BZOJ 3262 陌上花开/三维偏序 | CDQ分治

Luogu 3810 & BZOJ 3263 陌上花开/三维偏序 | CDQ分治 题面 \(n\)个元素,每个元素有三个值:\(a_i\), \(b_i\) 和 \(c_i\)。定义一个元素的偏序是三个值都小于等于它的值的元素的个数,对于\([0, n)\)的每个值\(i\),求偏序为\(i\)的元素个数。 题解 这道题我使用的是CDQ分治。 这道题有三个维度,每个维度都要对应一个数据结构...

weixin_30823833的博客 152

[Luogu3810] 【模板】三维偏序(陌上花开) [偏序][cdq分治/bitset/k-d tree]

[Link\frak{Link}Link] 一维排序二维cdq三维cdq或者树状数组 //三维树状数组 //三维cdq //bitset //k-d tree

最后一次修改 451

[BZOJ 3262] [Luogu P3810] 【模板】三维偏序(陌上花开)

BZOJ传送门 洛谷传送门 题目描述 有n朵花,每朵花有三个属性:花形(s)、颜色(c)、气味(m),用三个整数表示。 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量。 定义一朵花A比另一朵花B要美丽,当且仅Sa&amp;gt;=Sb,Ca&amp;gt;=Cb,Ma&amp;gt;=MbSa&amp;gt;=Sb,Ca&amp;gt;=Cb,Ma&amp;gt;=MbS_a&gt;=S_b,C_a&gt;=C_b

LPA的博客 309

BZOJ3262/Luogu3810 陌上花开 (三维偏序,CDQ)

一个下午的光阴之死,凶手是细节与手残。 致命的一枪:BIT存权值时: for(; x <= maxx; x += x&-x) t[x] += w; //for(; x <= n; x += x&-x) t[x] += w;// You died int n; int maxx; struct Element{ int a,b,c; l...

weixin_30416871的博客 165

luogu3810 【模板】三维偏序(陌上花开)

题目大意   有$n$个元素,第$i$个元素有$a_i,b_i,c_i$三个属性,设$f(i)$为$a_j<a_i,b_j<b_i,c_j<c_i$同时满足的数量。对于$d\in [0,n)$,求$f(i)=d$的数量。 思路 #include <cstdio> #include <cstring> #include <algori...

weixin_30505043的博客 106

【ybt金牌导航6-5-1】【luogu P3810】【模板】三维偏序(陌上花开)

有一些元素,有 a,b,c 三个属性。 设 f[i] 为满足 i 元素三个属性都大于等于其它元素的个数。 对于每个 x,求 f[i]=x 的数量。

欢迎您的光顾awa 192

P3810 【模板】三维偏序(陌上花开)

题目链接:https://www.luogu.org/problemnew/show/P3810 题解:三维偏序,cdq分治来解,首先对于首先第一维有序,然后按照一维排序后的第二维二分,树状数组维护第三维。 代码: #include <bits/stdc++.h> using namespace std; const int maxn=1e5+5; int pp[maxn*2]...

Fighting 373

陌上花开,Luogu P3810,cdq分治

正题 我也太菜了,最近才把这道题做了。 具体就是三维偏序,可以直接排序消掉一维,然后用cdq分治消掉一维,最后用树状数组消掉最后一维。 具体的细节就是abc都相等的时候要考虑虽然前面对后面的影响可以算出来,但是后面对前面的影响是不会算到的,一开始从后往前过一遍就可以了。 如何cdq套cdq还要再学一学,回来再补。 #include<...

Deep_Kevin的娱乐空间 389

[luogu] P3810 陌上花开

题源链接:https://www.luogu.org/problemnew/solution/P3810cdq分治解决三位偏序的模板题,cdq分治本身很好理解,网上也有很多题解了,我这里就不再重复,详细说几个细节:第一维快排并不只按照第一维排,在第一维相等的基础上依次按照第二、三维排序bool cmp(node a, node b) { if (a.a == b.a...

kesisour的博客 139
上一篇: BZOJ3781 小B的询问
下一篇: BZOJ1176[Balkan2007] Mokia
ShadyPi
博客等级 码龄9年 1万+粉丝 637原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShadyPi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值