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

CF762E Radio stations

Codeforces

很明显是一道偏序问题,我们先列出满足条件的台之间的关系。

\[\min(r_i,r_j)\ge|x_i-x_j| \]

\[|f_i-f_j|\le k \]

这看起来好像是两条式子,但是不能直接使用二维偏序解决,因为其中含有取最小值操作,所以无法直接使用二维偏序处理。

那么就可以尝试考虑三维偏序了。

先转换一下式子,拆掉绝对值。

\[r_j\le r_i \]

\[f_j-k\le f_i\le f_j+k \]

\[x_j-r_j\le x_i \le x_j+r_j \]

我们首先对于第一维,可以先把最小值问题处理了。我们按照半径长度从小到大排序进行处理即可,对应第一条式子。

对于第二维,我们用 CDQ 以后,对频率进行排序即可,对应第二条式子。

对于第三维,使用树状数组区间修改即可。由于需要使用树状数组,这一部分需要提前离散化。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,ans,tmp[300005],cnt;
struct P{int x,b,f,l,r;//分别记录位置,半径,频率, 在可传递范围的左右边界 
}a[100005];
bool cmp(P a,P b){return a.b<b.b;//先按照半径排序 
}
bool cmp2(P a,P b){return a.f<b.f;//按照频率排序 
}
struct BT{int c[200005];void init(){memset(c,0,sizeof(c));}int lowbit(int x){return x&-x;}void add(int x,int y){for(int i=x;i<=n;i+=lowbit(i))c[i]+=y;}int query(int x){int ans=0;for(int i=x;i;i-=lowbit(i))ans+=c[i];return ans;}int query(int l,int r){return query(r)-query(l-1);}
}bit;
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,cmp2),sort(a+mid+1,a+r+1,cmp2);int L=mid+1,R=mid+1;for(int i=l;i<=mid;i++){while(R<=r&&a[R].f-a[i].f<=k)bit.add(a[R].x,1),R++;//通过频率关系确定范围 while(L<=r&&a[i].f-a[L].f>k)bit.add(a[L].x,-1),L++;ans+=bit.query(a[i].l,a[i].r);}for(int i=L;i<R;i++)bit.add(a[i].x,-1);
}
signed main(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i].x>>a[i].b>>a[i].f;a[i].l=a[i].x-a[i].b;a[i].r=a[i].x+a[i].b;tmp[++cnt]=a[i].x;}sort(tmp+1,tmp+cnt+1);//离散化 cnt=unique(tmp+1,tmp+cnt+1)-tmp-1;for(int i=1;i<=n;i++){a[i].x=lower_bound(tmp+1,tmp+cnt+1,a[i].x)-tmp;a[i].l=lower_bound(tmp+1,tmp+cnt+1,a[i].l)-tmp;a[i].r=upper_bound(tmp+1,tmp+cnt+1,a[i].r)-tmp-1;}sort(a+1,a+n+1,cmp);CDQ(1,n);cout<<ans;return 0;
}
http://www.gsyq.cn/news/75740.html

相关文章:

  • 【拓补排序 TB_sort】P4017 最大食物链计数
  • 2025年深圳AI搜索排名优化公司推荐
  • Easysearch 2.0.0 性能测试
  • 基于STM32标准库的FreeRTOS移植与任务创建 - 详解
  • 2025 最新工业机器人应用服务商 / 厂家 TOP5 评测!科技赋能 + 全生命周期服务权威榜单发布,重构智能制造生态
  • Launch X431 PRO3 V+ Elite: Bi-Directional, ECU Coding Topology Mapping for Euro/Amer Vehicles
  • linux单用户模式
  • 吉他自学笔记
  • 为全球宝宝选对营养:央视关注+进博亮相,德国安心之选inne
  • 2025 年 12 月法兰保护罩厂家权威推荐榜:阀门保温罩/法兰防溅罩/法兰保护套,专业防护与耐用品质深度解析
  • openEuler:构建AI原生操作系统的架构演进与实践路径
  • FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack
  • Microsoft Visual Studio 2010 TFS强制解除签出
  • HTTP/2在EDI领域中的优势:构建高效、安全、现代化的数据交换基石 - 详解
  • why Picograph can not learn English by translator
  • cursor
  • openEuler 软件生态多元适配评测:分布式存储与大数据组件实战验证
  • 短视频矩阵架构搭建指南:源码部署与全流程解析
  • 完整教程:Docker学习笔记---day001
  • 2025年度靠谱的实验室反应釜厂家TOP5权威推荐
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤+计算机专业
  • Python线程指南
  • 【基础】Unity着色器编程的语言和数学基础介绍
  • 2025年评价高的Q235模具钢/模具钢45#锯切厂家最新权威推荐排行榜
  • 显微镜品牌哪家强?2025年最新市场格局分析与五大高价值品牌推荐
  • 2025年重庆梁山鸡品牌排行榜,解析重庆李子坝梁山鸡适合朋友
  • 凸优化理论(五)-勒让德变换
  • 显微镜品牌哪家强?2025年最新市场分析与五大高价值品牌推荐
  • 2025年质量好的磁悬浮冷水机厂家最新实力排行
  • 2025年知名的珠地天鹅绒/素天鹅绒厂家最新推荐权威榜