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

资讯详情

深度解读 · 专业分析

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

最新资讯

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

P10281 [USACO24OPEN] Grass Segments G

📅 发布时间:2026/9/9 19:22:16 👁 浏览次数:
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/9/1 8:54:17 查看详情
C# Avalonia 17- ControlTemplates - GradientButtonTest

C# Avalonia 17- ControlTemplates - GradientButtonTest

2026/9/1 18:47:24 查看详情
2025年靠谱的升降机TOP实力厂家推荐榜

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

2026/9/8 18:12:14 查看详情
Word转Excel总错位?两种思路+批量汇总技巧一次讲透

Word转Excel总错位?两种思路+批量汇总技巧一次讲透

2026/9/9 19:21:33 查看详情
ISTA 6A与3A对比:跨境电商包装测试标准怎么选?

ISTA 6A与3A对比:跨境电商包装测试标准怎么选?

2026/9/9 19:21:33 查看详情
内链策略实操指南:用站内链接撬动SEO排名

内链策略实操指南:用站内链接撬动SEO排名

2026/9/9 19:21:03 查看详情
为什么Spring Cloud Gateway必须基于WebFlux?响应式网关原理与选型深度解析

为什么Spring Cloud Gateway必须基于WebFlux?响应式网关原理与选型深度解析

2026/9/9 19:21:03 查看详情
博文生成必备要素:项目标题、关键词与摘要的配置指南

博文生成必备要素:项目标题、关键词与摘要的配置指南

2026/9/9 19:20:02 查看详情
Maven打包瘦身:从Jar中排除META-INF/maven文件夹的完整指南

Maven打包瘦身:从Jar中排除META-INF/maven文件夹的完整指南

2026/9/9 19:19:32 查看详情
Word转Excel总错位?两种思路+批量汇总技巧一次讲透

Word转Excel总错位?两种思路+批量汇总技巧一次讲透

2026/9/9 19:21:33 查看详情
ISTA 6A与3A对比:跨境电商包装测试标准怎么选?

ISTA 6A与3A对比:跨境电商包装测试标准怎么选?

2026/9/9 19:21:33 查看详情
内链策略实操指南:用站内链接撬动SEO排名

内链策略实操指南:用站内链接撬动SEO排名

2026/9/9 19:21:03 查看详情
为什么Spring Cloud Gateway必须基于WebFlux?响应式网关原理与选型深度解析

为什么Spring Cloud Gateway必须基于WebFlux?响应式网关原理与选型深度解析

2026/9/9 19:21:03 查看详情
博文生成必备要素:项目标题、关键词与摘要的配置指南

博文生成必备要素:项目标题、关键词与摘要的配置指南

2026/9/9 19:20:02 查看详情
Maven打包瘦身:从Jar中排除META-INF/maven文件夹的完整指南

Maven打包瘦身:从Jar中排除META-INF/maven文件夹的完整指南

2026/9/9 19:19:32 查看详情
2025 Mathorcup妈妈杯B题全攻略:从审题到论文的完整链路

2025 Mathorcup妈妈杯B题全攻略:从审题到论文的完整链路

2026/9/9 0:00:15 查看详情
基于STM32的智能药盒:从状态机设计到Proteus仿真全解析

基于STM32的智能药盒:从状态机设计到Proteus仿真全解析

2026/9/9 0:01:16 查看详情
留个神!不是所有 AI 写作工具都靠谱,2026 导师认可工具全览

留个神!不是所有 AI 写作工具都靠谱,2026 导师认可工具全览

2026/9/9 0:02:17 查看详情
AI视频二次采样原理与ComfyUI工作流实战:从模糊到高清

AI视频二次采样原理与ComfyUI工作流实战:从模糊到高清

2026/9/9 17:23:53 查看详情
负向提示词在LLM中的逆反效应:为什么别想粉色大象总是失效

负向提示词在LLM中的逆反效应:为什么别想粉色大象总是失效

2026/9/9 6:01:00 查看详情
叙事游戏开发:从对话系统到分支剧情的完整技术实现

叙事游戏开发:从对话系统到分支剧情的完整技术实现

2026/9/9 5:48:00 查看详情
雨花区哪家财务公司代理记账比较好?

雨花区哪家财务公司代理记账比较好?

2026/9/8 16:06:09 查看详情
从零到一构建开源项目的完整历程:交付前的最后检查怎么做

从零到一构建开源项目的完整历程:交付前的最后检查怎么做

2026/9/7 22:37:06 查看详情
日志平台 日志分析平台与全链路追踪:交付前的最后检查怎么做

日志平台 日志分析平台与全链路追踪:交付前的最后检查怎么做

2026/9/8 10:38:37 查看详情

关于尧图

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

快速链接

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

服务项目

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

联系方式

电话:400-XXX-XXXX

邮箱:info@zskr.cn

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

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