尧图网络科技 Logo 尧图网络科技
  • 首页
  • 关于我们
  • 建站服务
  • UI 设计
  • 案例展示
  • SEO 优化
  • 资讯中心
  • 联系我们

资讯详情

深度解读 · 专业分析

  • 首页
  • 资讯中心
  • /
  • P10281 [USACO24OPEN] Grass Segments G

最新资讯

  • 全部资讯
  • 行业动态
  • UI 设计
  • SEO 优化
  • 网站开发

P10281 [USACO24OPEN] Grass Segments G

📅 发布时间:2026/6/19 14:44:31 👁 浏览次数:
P10281 [USACO24OPEN] Grass Segments G

P10281 [USACO24OPEN] Grass Segments G

洛谷

15pts

判断样例即可。

25pts

\(O(n^2)\) 的暴力枚举即可。

55pts

满足条件为 \(\min(r_i,r_j)-\max(l_i,l_j) \ge k_i\) 时,第 \(i\) 个可获得一个品种。

由于被减数取最小值,减数取最大值,那么就必定成立。

  • \(r_i-l_i \ge k_i\)(已知条件)

  • \(r_j-l_j \ge k_i\)

  • \(r_i-l_j \ge k_i\)

  • \(r_j-l_i \ge k_i\)

在所有的 \(k_i\) 均相等时,第二条式子也是必定成立的。

此时这个问题就是一个二维偏序问题了。

那么就可以直接使用树状数组或者归并排序求出,即可解决这一性质的部分。

与前一部分的 \(O(n^2)\) 放在一起即可。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=4e5+5;
int n,l[N],r[N],k[N],ans[N],tmp[N*2],cnt;
void solve1(){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j)continue;if(min(r[i],r[j])-max(l[i],l[j])>=k[i])ans[i]++;}}
}
int lowbit(int x){return x&-x;
}
struct BT{int c[N];void init(){memset(c,0,sizeof(c));}void add(int x,int y){for(int i=x;i<=cnt;i+=lowbit(i))c[i]+=y;}int query(int x){int ans=0;for(int i=x;i>=1;i-=lowbit(i))ans+=c[i];return ans;}
}bit;
struct P{int l,r,id;
}a[N];
bool cmp(P a,P b){if(a.r==b.r)return a.id>b.id;return a.r>b.r;
}
void solve2(){for(int i=1;i<=n;i++){a[++cnt]={r[i]-k[i],l[i]+k[i],i};a[++cnt]={l[i],r[i],n+i};}sort(a+1,a+2*n+1,cmp);for(int i=1;i<=2*n;i++)tmp[++cnt]=a[i].l;sort(tmp+1,tmp+cnt+1);cnt=unique(tmp+1,tmp+cnt+1)-tmp-1;for(int i=1;i<=2*n;i++)a[i].l=lower_bound(tmp+1,tmp+cnt+1,a[i].l)-tmp;for(int i=1;i<=2*n;i++){if(a[i].id>n)bit.add(a[i].l,1);else ans[a[i].id]+=bit.query(a[i].l);}for(int i=1;i<=n;i++)ans[i]--;
}
signed main(){cin>>n;cnt=0;for(int i=1;i<=n;i++){cin>>l[i]>>r[i]>>k[i];}if(n<=5000){solve1();}else {solve2();}for(int i=1;i<=n;i++)cout<<ans[i]<<endl;return 0;
}

100pts

根据上一步分析,多出了一个 \(r_j-l_j \ge k_i\),那么就可以直接考虑使用三维偏序。

做三维偏序时,通常使用 CDQ 分治算法。

相较于常规的二维偏序而言,CDQ 分治算法解决三维偏序相当于可以通过树状数组在归并排序中得到每一个点的取值。

我们在存储时建立一组作为被相交形成答案的线段,一组作为查询答案的线段。

在存储结构体时直接将两部分对应的值加入到结构体的对应位置,这样就可以快速地排序处理了。

在清理树状数组时,由于范围较大,直接清空可能会超时,除了使用时间戳优化还可以直接进行逆操作,将之前添加的值删除以此完成清空。

具体细节看又香又短的代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=4e5+5;
int n,tmp[N],ans[N],cnt;
struct P{int l,r,k,id;
}a[N],b[N];
bool cmp(P a,P b){if(a.k==b.k)return a.id<b.id;return a.k>b.k;
}
int lowbit(int x){return x&-x;
}
struct BT{int c[N];void init(){memset(c,0,sizeof(c));}void add(int x,int y){for(int i=x;i<=cnt;i+=lowbit(i))c[i]+=y;}int query(int x){int ans=0;for(int i=x;i>=1;i-=lowbit(i))ans+=c[i];return ans;}
}bit;
void CDQ(int l,int r){if(l==r)return ;int mid=(l+r)/2;CDQ(l,mid);CDQ(mid+1,r);int L=l,R=mid+1;for(int i=l;i<=r;i++){if(R>r||L<=mid&&a[L].r>=a[R].r){b[i]=a[L];if(!a[L].id)bit.add(a[L].l,1);L++;}else {b[i]=a[R];if(a[R].id)ans[a[R].id]+=bit.query(a[R].l);R++;}}for(int i=l;i<=mid;i++)if(!a[i].id)bit.add(a[i].l,-1);for(int i=l;i<=r;i++)a[i]=b[i];
}
signed main(){cin>>n;for(int i=1,l,r,k;i<=n;i++){cin>>l>>r>>k;a[i]={r-k,l+k,k,i};a[n+i]={l,r,r-l,0};}for(int i=1;i<=2*n;i++)tmp[i]=a[i].l;sort(tmp+1,tmp+2*n+1);cnt=unique(tmp+1,tmp+2*n+1)-tmp-1;for(int i=1;i<=2*n;i++)a[i].l=lower_bound(tmp+1,tmp+cnt+1,a[i].l)-tmp;sort(a+1,a+2*n+1,cmp);CDQ(1,2*n);for(int i=1;i<=n;i++)cout<<ans[i]-1<<endl;return 0;
}

相关新闻

2025年诚信的316L不锈钢带最新TOP厂家排名

2025年诚信的316L不锈钢带最新TOP厂家排名

2026/6/19 5:58:14 查看详情
C# Avalonia 17- ControlTemplates - GradientButtonTest

C# Avalonia 17- ControlTemplates - GradientButtonTest

2026/6/19 10:52:25 查看详情
2025年靠谱的升降机TOP实力厂家推荐榜

2025年靠谱的升降机TOP实力厂家推荐榜

2026/6/19 10:09:52 查看详情
合肥靠谱黄金回收排行|差异化优势深度梳理,新手闭眼优选 - 奢侈品回收评测

合肥靠谱黄金回收排行|差异化优势深度梳理,新手闭眼优选 - 奢侈品回收评测

2026/6/19 18:10:36 查看详情
实用免费去水印工具合集:免费软件小程序一站式推荐 - 工具软件使用方法推荐

实用免费去水印工具合集:免费软件小程序一站式推荐 - 工具软件使用方法推荐

2026/6/19 18:10:36 查看详情
终极指南:3DSident - 任天堂3DS硬件检测工具的完整使用教程

终极指南:3DSident - 任天堂3DS硬件检测工具的完整使用教程

2026/6/19 18:10:36 查看详情
2026南京钻石回收实地横向测评:7家本地门店实景实测,新手闲置钻石变现完整参考指南 - 薛定谔的梨花猫

2026南京钻石回收实地横向测评:7家本地门店实景实测,新手闲置钻石变现完整参考指南 - 薛定谔的梨花猫

2026/6/19 18:08:32 查看详情
消除水印工具入门指南:零基础也能学会的方法 - 工具软件使用方法推荐

消除水印工具入门指南:零基础也能学会的方法 - 工具软件使用方法推荐

2026/6/19 18:08:32 查看详情
智慧职教刷课脚本:3步告别重复学习,智能解放你的时间

智慧职教刷课脚本:3步告别重复学习,智能解放你的时间

2026/6/19 18:06:34 查看详情
行星盘动力学与分子谱线诊断技术解析

行星盘动力学与分子谱线诊断技术解析

2026/6/19 0:01:24 查看详情
2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026年成都GEO优化机构怎么选?全维度实用指南 - 刘向阳而生

2026/6/19 0:01:39 查看详情
Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

Akagi终极指南:5分钟掌握智能麻将AI助手的完整使用教程

2026/6/19 0:01:39 查看详情
从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

从Landsat到高分系列:手把手教你选择适合自己项目的遥感卫星数据

2026/6/18 19:44:15 查看详情
福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

福州空调维修上门加氟移机空调不制冷、推荐本地老牌鑫盛达、冷顺安 - 我叫一

2026/6/18 22:29:08 查看详情
嵌入式调试器组件化界面与拖拽交互技术详解

嵌入式调试器组件化界面与拖拽交互技术详解

2026/6/18 22:19:33 查看详情
YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

YOLOv11涨点改进| CVPR 2026 | 独家创新首发、特征融合改进篇| 引入CMGF 引导特征融合机制,实现对不同模态特征的自适应增强与高效融合,助力多模态目标检测,小目标检测或分割有效涨点

2026/6/18 22:29:00 查看详情
E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

E-E-A-T 成第一权重:2027 年无经验内容将被彻底淘汰

2026/6/18 23:21:38 查看详情
深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

深圳福田园岭老小区搬家公司推荐 经验足师傅高效搬运攻略 - 从来都是英雄出少年

2026/6/18 22:29:04 查看详情

关于尧图

立足北京本地的一站式网站建设服务与设计教学平台,深耕企业网站定制开发、全网 SEO 优化及网络推广服务。

快速链接

  • 关于我们
  • 建站服务
  • 案例展示
  • 资讯中心

服务项目

  • 企业官网定制
  • UI 界面设计
  • SEO 优化推广
  • 移动端适配

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

地址:北京市朝阳区 XXX 路 XX 号

© 2026 尧图网络科技 版权所有 | 京 ICP 备 XXXXXXXX 号