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

微积分,用编程理解高数(python,C,C++) 很好理解,导数中,x是哪一点的导数,dx是精准度,y等于f(x)即函数。导数结果就是瞬时变化率。积分很好理解,a为下限,b为上限,y为函数,结果就是y=f(x)下a到b的面积。只要用定积分代入a=0,b=10(10s)y=x(1*x=1)就得到结果。F(x)为原函数,即微分后的函数是f(x)dx,微分前是F(x)一列车初始速度为10m/s,加速度为。才几十行代码,微积分也不是很难啊。,问速度达到20时车走了多少米。 阅读详情

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

题目描述

有 n n n 个元素,第 i i i 个元素有 a i , b i , c i a_i,b_i,c_i ai​,bi​,ci​ 三个属性,设 f ( i ) f(i) f(i) 表示满足 a j ≤ a i a_j \leq a_i aj​≤ai​ 且 b j ≤ b i b_j \leq b_i bj​≤bi​ 且 c j ≤ c i c_j \leq c_i cj​≤ci​ 且 j ≠ i j \ne i j=i 的 j j j 的数量。

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

输入格式

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

接下来 n n n 行,每行三个整数 a i , b i , c i a_i ,b_i,c_i ai​,bi​,ci​,分别表示三个属性值。

输出格式

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

样例 #1

样例输入 #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 ≤ 1 0 5 1 \leq n \leq 10^5 1≤n≤105, 1 ≤ a i , b i , c i ≤ k ≤ 2 × 1 0 5 1 \leq a_i, b_i, c_i \le k \leq 2 \times 10^5 1≤ai​,bi​,ci​≤k≤2×105。

原题

洛谷P3810——传送门

思路

很遗憾,本蒟蒻尚不具备自己想出该紫题思路的能力,所以思路借鉴的是 echo6342 大佬的题解,并给出了自己实现的代码。思路详见洛谷题解——传送门的 echo6342 大佬写的题解。不过本蒟蒻会努力的喵,争取提高自己的能力uuu。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 1e5 + 6;
const int maxk = 2e5 + 6;

int n, kk;

struct node
{
    int x, y, z;
    int w;   // 权值,其值表示的是该元素的重复数量
    int ans; // 统计有多少个x,y,z均小于等于本元素的元素数量
    bool operator==(const node &a) const
    {
        return x == a.x && y == a.y && z == a.z;
    }
    void operator=(const node &a)
    {
        x = a.x;
        y = a.y;
        z = a.z;
        w = a.w;
        ans = a.ans;
    }
};

node b[maxn]; // 输入的元素数组
node a[maxn]; // 去重后的元素数组

int cnt[maxk]; // 统计答案个数

int tr[maxn]; // 树状数组

int lowbit(int x) // 获取低位2次幂数
{
    return x & -x;
}

void update(int x, int k) // 单点修改
{
    while (x <= kk)
    {
        tr[x] += k;
        x += lowbit(x);
    }
}

int query(int x) // 前缀和查询
{
    int res = 0;
    while (x)
    {
        res += tr[x];
        x -= lowbit(x);
    }
    return res;
}

bool cmp_x(node a, node b)
{
    if (a.x == b.x)
        if (a.y == b.y)
            return a.z < b.z;
        else
            return a.y < b.y;
    else
        return a.x < b.x;
}

bool cmp_y(node a, node b)
{
    if (a.y == b.y)
        if (a.z == b.z)
            return a.x < b.x;
        else
            return a.z < b.z;
    else
        return a.y < b.y;
}

void cdq(int l, int r)
{
    if (l == r)
        return;
    int mid = (l + r) >> 1;
    cdq(l, mid);
    cdq(mid + 1, r);

    // 按第二维排序
    sort(a + l, a + mid + 1, cmp_y);
    sort(a + mid + 1, a + r + 1, cmp_y);

    // 双指针,j指向前一半,i指向后一半
    int j = l;
    for (int i = mid + 1; i <= r; i++)
    {
        while (a[j].y <= a[i].y && j <= mid)
        {
            update(a[j].z, a[j].w);
            j++;
        }
        a[i].ans += query(a[i].z);
    }
    // 清空树状数组
    for (int i = l; i < j; i++)
    {
        update(a[i].z, -a[i].w);
    }
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    cin >> n >> kk;

    for (int i = 1; i <= n; i++)
    {
        cin >> b[i].x >> b[i].y >> b[i].z;
        b[i].w = 1;
        b[i].ans = 0;
    }
    // 按第一维排序
    sort(b + 1, b + 1 + n, cmp_x);

    // 去重,将b数组转化为a数组,同时更新n的值
    int last_n = n;
    int new_n = 0;
    for (int i = 1; i <= last_n; i++)
    {
        if (b[i] == b[i - 1]) // 结构体中已重载==运算符
        {
            a[new_n].w++;
        }
        else
        {
            new_n++;
            a[new_n] = b[i]; // 结构体中已重载=运算符
        }
    }
    n = new_n; // 更新n的值为去重后数组即a数组的大小

    cdq(1, n); // 分治喵

    for (int i = 1; i <= n; i++)
    {
        cnt[a[i].ans + a[i].w - 1] += a[i].w; // 按照题目要求统计数量
    }
    for (int i = 0; i < last_n; i++)
    {
        cout << cnt[i] << '\n';
    }

    return 0;
}
海洋浮游生物识海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI别系统:基于海洋浮游生物识别系统:基于YOLOv10的显微图像自动检测与UI展示YOLOv10的显微图像自动检测与UI展示 本文介绍了如何利用YOLOv10模型进行海洋浮游生物的自动识别,旨在提高传统显微镜观测的效率与准确性。研究背景强调了浮游生物在海洋生态系统中的重要性,并指出传统方法的局限性。数据集选用WHOI-Plankton,包含70多种浮游生物的20000多张带标签图像。文章详细描述了YOLOv10模型的安装、数据集配置、训练与测试步骤,并提供了基于PyQt5的图形化检测界面代码。结果显示,模型在精度、召回率和mAP@0.5等指标上表现优异,推理速度达到约30 FPS。最后,文章提出了部署建议和未来优化方向,如集成摄像 阅读详情

相关推荐

单路径微分相除和微分自乘相减算法(PGC-SDD-DSM)

PGC-SDD-DSM算法通过融合单路微分相除和差分自乘,解决了传统PGC解调技术对调制深度和光强干扰敏感的问题,显著提升了解调稳定性和抗失真能力。其高信噪比、低谐波失真以及对参数变化的鲁棒性,使其在光纤传感领域具有重要应用价值。PGC-SDD-DSM算法在计算复杂度方面具有显著的优势,主要体现在其高稳定性和低谐波失真上。这些优势使其在光纤光学干涉传感器中表现出色,尤其是在面对光强干扰和调制深度变化时。

百态·数智思维 | 聚焦大数据、量化与未来AI 841

三维偏序/cdq分治/

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

lijing_er的博客 3248

从实验室到生产线:Qwen3-Omni后训练技术在实际业务中的落地挑战

本文探讨了Qwen3-Omni后训练技术在实际业务中的落地挑战,重点分析了多模态AI在工业应用中的关键问题与解决方案。通过金融风控、跨境电商等场景案例,揭示了通用模型与垂直需求的矛盾,并提供了知识蒸馏、语音合成优化等实战经验,助力企业实现技术到业务的转化。

weixin_29035147的博客 266

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

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

EQUINOX1的博客 5628

在 Linux 虚拟机中手动安装 VMware Tools

对于 Linux 虚拟机,您可以从命令行手动安装 VMware Tools。对于 Linux 的较高发行版,请使用集成的 open-vm-tools 版本。 前提条件 有关 open-vm-tools 的操作系统兼容性的详细信息,请参见《VMware 兼容性指南》,网址为VMware Compatibility Guide - System Search。 开启虚拟机。 确认客户机操作系统正在运行。 因为 VMware Tools 安装程序是使用 Perl 编写的,请确认已在客户机操作系统中安..

m0_62526815的博客 1755

解放双手:用KUKA示教器白键一键触发复杂工艺,自定义你的快捷指令

本文详细介绍了如何利用KUKA示教器的工艺白键功能,通过自定义快捷指令一键触发复杂工艺,显著提升自动化产线效率。文章涵盖UserTech技术栈解析、KRL脚本封装、人机交互视觉工程及工业实战策略,帮助工程师实现机械臂操作的高阶优化。

weixin_30379531的博客 432

【洛谷】P3810

排序 #数据结构 #分治。

Antonio915的博客 1204

柑橘病虫害识别方案总结

1. 方案一 1.1 赛题背景 1.2 数据分析 1.3 模型设计 1.3.1 模型具体方案 1.3.2 模型设计 1.4 实验结果 1.5 总结与展望 2. 方案二 2.1 赛题介绍 2.2 数据分析 2.3 算法方案解析 2.3.1 检测模型 2.3.2 提升策略 2.4 优化思路 3. 方案三 3.1 数据分析 3.1.1 数据说明 3.2 技术展示 3.2.1 数据输入端 3.2.2 模型结构端 3.2.3 上下文信息 3.2.4 训练优化端 3.2.5 创新性分析 3.3 算法及系统思考.....

herosunly的博客 2万+

三维偏序cdq

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

tanjunming2020的博客 1244

【异常】Claude Code 在 Windows CMD 中出现重影现象的排查与解决

Windows CMD运行Claude Code时出现文字重影、乱码等问题,原因是传统CMD对现代ANSI终端控制序列支持不足。解决方案包括:1)推荐安装Windows Terminal(完全支持ANSI标准);2)使用PowerShell 7;3)优化CMD设置(启用虚拟终端、UTF-8编码);4)关闭Claude Code视觉特效。建议优先使用Windows Terminal以获得最佳体验,这是最彻底的解决方案。其他方案仅能部分改善或缓解问题。

奶爸的编程之路,也就一周冷个三天 1958

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

【WorkBuddy专栏61】字节的AI打法为什么一直在变——WorkBuddy/CodeBuddy vs 字节Trae/TRAE Work/豆包全维度对比

AI人人懂 2738

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

P3810 【模板】三维偏序(陌上花开) 先来占个坑 #include<bits/stdc++.h> #include <unordered_map> using namespace std; template<class...Args> void debug(Args... args) {//Parameter pack auto tmp = { (cout << args << ' ', 0)... }; cout <&l

weach的博客 314

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7282

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

三维偏序初见

Ajwallet 536

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

思路: 三维偏序的模板题。 思想就是: 1.先对x进行排序,然后可以把区间分割成[l,mid]和[mid+1,r][l,mid]和[mid+1,r][l,mid]和[mid+1,r]的子区间。 2.对于右区间,所有左区间内的元素都是“有可能”对其产生贡献的(因为固定了x左边小右边大)。那么现在考虑第二维y,对于这个[l,r][l,r][l,r]区间进行对y的排序。 3.排序完后进行遍历,对于当前i,如果他是左区间的,就用树状数组单点更新他的z值;如果他是右区间的,说明i之前有的元素已经更新过的元素满足:

待到山花烂漫时 440

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

【洛谷 P3810】 【模板】三维偏序(陌上花开) 题目大意: 给你一堆数,每个数有三个权值a[i],b[i],c[i]a[i],b[i],c[i]a[i],b[i],c[i] 设 f[i]f[i]f[i] 表示 ∑(a[j]≤a[i]) && (b[j]≤b[i]) && (c[j]≤c[i])     i !=j\sum(a[j]\leq a[i])~\&\&amp

天空之心 293

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

题目链接:点击查看 题目大意:给出 n 个点,每个点有三个属性 a , b , c ,对于每个点 i 来说,求出有多少个 j 满足 a[ j ] <= a[ i ] && b[ j ] <= b[ i ] && c[ j ] <= c[ i ] 题目分析:三维偏序的模板问题,咕咕咕了有一年的CDQ分治,今天终于补出来了,简单总结一下,一维偏序排个序就出来了,二维偏序是对一维排序,另一维用线段树或树状数组维护,三维的话,第一维排序,第二维用归并排序维护,第

Falcon的博客 564

【题解】洛谷P3810【模板】三维偏序(陌上花开)cdq分治+树状数组

有n(1e5)个元素,每个元素有ai,bi,cia_i,b_i,c_iai​,bi​,ci​(2e5)三个属性,设f(i)f(i)f(i)表示满足aj<=aia_j<=a_iaj​<=ai​且bj<=bib_j<=b_ibj​<=bi​且cj<=cic_j<=c_icj​<=ci​的jjj的数量。输出所有的fif_ifi​. 有一个显然的复杂...

秋叶红于二月花 499

洛谷P3810 【模板】三维偏序(陌上花开)【CDQ分治、树套树】

题目链接 题意 给出 nnn 个点,每个点有三个属性 X,Y,ZX,Y,ZX,Y,Z,f[i]f[i]f[i] 表示点对(i,j)(i,j)(i,j)满足Xi<Xj, Yi<Yj, Zi<ZjX_i < X_j,\ Y_i<Y_j,\ Z_i<Z_jXi​<Xj​, Yi​<Yj​, Zi​<Zj​的 jjj 的个数,求 f[0...n−1]f[0...n-1]f[0...n−1] 题解 CDQ分治的模板题,先对第

qq_50554695的博客 287

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

题目   题解: CDQ分治模板: #include&lt;bits/stdc++.h&gt; using namespace std; struct aaa{ int x,y,z,id,hh; }a[200001],b[200001],c[200001]; int n,m,f[200001],ans[200001]; bool cmp(aaa a,aaa b){ ret...

qq_41510496的博客 297

LLC谐振变换器ZVS/ZCS实现:开关管选型与死区时间设置实战

LLC谐振变换器凭借软开关特性,在中大功率电源设计中广泛用于降低开关损耗、提升效率。其核心原理是通过谐振网络使励磁电流在死区时间内对开关管寄生电容充放电,实现原边ZVS,同时副边整流管自然实现ZCS。合理选择开关管(权衡Coss、Qg与Rds(on))并精确设置死区时间,是确保全负载范围软开关、避免直通炸管的关键。这些技术广泛应用于车载充电机、服务器电源和光伏逆变器等场景。本文深入剖析LLC谐振变换器ZVS/ZCS的实现细节,从开关管选型到死区时间计算,分享实操踩坑经验,助力电源工程师优化设计。

weixin_34054931的博客 459

洛谷 P3810 【模板】三维偏序(陌上花开)cdq分治

题目背景这是一道模板题可以使用bitset,CDQ分治,K-DTree等方式解决。题目描述有 n n 个元素,第 i i 个元素有 a_i a i ​ 、 b_i b i ​ 、 c_i c i ​ 三个属性,设 f(i) f(i) 表示满足 a_j \leq a_i a j ​ ≤a i ​ 且 b_j \leq b_i b

liangzihao1的博客 572

bzoj3262: 陌上花开/洛谷P3810 【模板】三维偏序(陌上花开)----cdq分治模板题

分治模板题

蒲公英殇的博客 236

洛谷 P3810 【模板】三维偏序(陌上花开)(cdq分治)

const int N=2e5+5; int n,m,_; //int i,j,k; struct Node { int x,y,z; int w,ans; void read(){ sddd(x,y,z); } }a[N],b[N]; int c[N]; int f[N]; bool cmp(Node a,Node b) { if(a.x==b.x){ if(...

C_Dreamy的博客 595

[洛谷P3810]【模板】三维偏序(陌上花开)

题目大意:有$n$个元素,第$i$个元素有三个属性$a_i,b_i,c_i$,设$f(i)=\sum\limits_{i\not = j}[a_j\leqslant a_i,b_j\leqslant b_i,c_j\leqslant c_i]$,令$d(i)=\sum\limits_{j=1}^n[f(j)=i]$,求$d$ 题解:三位偏序,我用了$CDQ$分治,$a$排序解决,$b$$CDQ$...

weixin_30852451的博客 83

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

  这道题有等于号。 所以要去重,麻烦一点。   #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; using namespace std; #define LL long long co...

Mr_Treeeee的博客 382
上一篇: 洛谷 P3368 【模板】树状数组 2
下一篇: 洛谷 B2123 字符串 p 型编码
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值