当前位置: 首页 > news >正文

离线算法

CDQ分治

用于解决三维偏序问题。

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

\(n\) 个元素,第 \(i\) 个元素有 \(a_i, b_i, c_i\) 三个属性,求满足 \(a_j \leq a_i\)\(b_j \leq b_i\)\(c_j \leq c_i\)\(j \neq i\)\(j\) 的数量。

我们可知一维偏序就是简单排序,二维偏序是求逆序对个数,可以推出三维偏序可以先给第一维排序,再把第二位归并排序,同时用树状数组维护第三维的贡献。

代码如下:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,M=2e5+10;
int k,tr[M],ans[N];
struct node{int a,b,c;int cnt,res;
}q[N],p[N];
bool cmp(node n,node m){if(n.a!=m.a) return n.a<m.a;if(n.b!=m.b) return n.b<m.b;return n.c<m.c;
}
int lowbit(int x){return x&(-x);
}
void add(int x,int w){while(x<=k){tr[x]+=w;x+=lowbit(x);}
}
int query(int x){int res=0;while(x){res+=tr[x];x-=lowbit(x);}return res;
}
void cdq(int l,int r){if(l>=r) return;int mid=(l+r)>>1;cdq(l,mid),cdq(mid+1,r);int i=l,j=mid+1,k=0;while(i<=mid&&j<=r){if(q[i].b<=q[j].b){add(q[i].c,q[i].cnt);p[++k]=q[i++];}else{q[j].res+=query(q[j].c);p[++k]=q[j++];}}while(i<=mid){add(q[i].c,q[i].cnt);p[++k]=q[i++];}while(j<=r){q[j].res+=query(q[j].c);p[++k]=q[j++];}for(int i=l;i<=mid;i++) add(q[i].c,-q[i].cnt);for(int i=l,j=1;j<=k;i++,j++) q[i]=p[j];
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,m=1;cin>>n>>k;for(int i=1;i<=n;i++){cin>>q[i].a>>q[i].b>>q[i].c;q[i].cnt=1,q[i].res=0;}sort(q+1,q+n+1,cmp);for(int i=2;i<=n;i++){if(q[i].a==q[m].a&&q[i].b==q[m].b&&q[i].c==q[m].c) q[m].cnt++;else q[++m]=q[i];}cdq(1,m);for(int i=1;i<=m;i++) ans[q[i].res+q[i].cnt-1]+=q[i].cnt;for(int i=0;i<n;i++) cout<<ans[i]<<"\n";return 0;
} 
http://www.jsqmd.com/news/560669/

相关文章:

  • 如何在2024年继续运行Flash游戏?终极CefFlashBrowser解决方案指南
  • OneMore安装包构建详解:从源码到可执行文件的全流程
  • Xamarin.Forms安全最佳实践:10个数据加密与认证授权的完整方案
  • 使用AIVideo和Matlab实现科学可视化视频生成
  • 文旅低碳精细化升级!巨有科技数智方案,破解“低碳落地难、管控粗”痛点
  • 终极DBeaver插件依赖更新策略:安全更新依赖项的完整指南
  • 天津岗位外包机构选哪家?天津政集企业管理有限公司,深耕天津东丽区滨海新区等地,合规专业值得信赖 - 十大品牌榜
  • 3步打造极简菜单栏:2025年macOS效率工具新选择
  • 火锅底料供应商推荐 适配多餐饮业态需求 - 真知灼见33
  • Top2Vec与其他主题建模算法对比:LDA vs Top2Vec vs BERTopic – 2023年最全面评测指南
  • 5分钟上手MinerU:用镜像快速提取PDF中的表格数据
  • 2024最新版CISCO Packet Tracer注册避坑指南:从NetAcad到SkillsForAll的完整流程
  • Linux 内核中的 CPU 调度优化:从 CFS 到实时调度
  • 别再只盯着Zoom了!用Jitsi+Freeswitch自建带电话接入功能的企业级会议系统,成本直降90%
  • 2026抽动症哪个机构治疗的好?专业机构推荐 - 品牌排行榜
  • 终极指南:5分钟在Windows上安装Android应用
  • Win11Debloat全效工具:极速优化Windows系统性能指南
  • FireRed-OCR Studio企业落地:保险理赔单图像→JSON+Markdown双格式输出
  • 代码随想录 Q71电话号码的字母组合
  • 2026年意大利里米尼健身展 RiminiWellness- 新天国际会展 - 中国组展单位 - 新天国际会展
  • 2026划线机厂家推荐:智能化转型下的5大优质选择 附选型指南 - 博客湾
  • REX-UniNLU实战:电商评论情感分析+实体抽取,5分钟生成结构化报告
  • 3分钟搞定歌词获取!163MusicLyrics免费开源工具终极指南
  • 如何彻底告别微信聊天记录丢失?WeChatMsg让你的对话永久留存
  • WeChatMsg:实现微信聊天记录永久备份的创新方案 - 个人用户的数据自主与隐私保护指南
  • 2026年3月商场拆除公司推荐:静音无损快速拆运 全流程安全合规之选 - 品牌企业推荐师(官方)
  • OPENIPC[ssc338Q+hi3536dv100]开源图传----硬件选型与实战避坑指南
  • Botty:暗黑2重制版自动化刷图的智能视觉方案——提升73%效率的开源工具
  • OpenClaw一周使用手记:一个老程序员的冷静观察
  • 手把手教你用Nunchaku FLUX.1:快速生成水彩质感插画作品