尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

P11664 [JOI 2025 Final] 缆车 / Mi Telefrico

P11664 [JOI 2025 Final] 缆车 / Mi Telefrico
📅 发布时间:2026/6/22 3:30:51

思路

注意到,DAG 符合条件当且仅当节点 \(2 \sim n\) 的入度都不为零。

对于一个左端点 \(l\),合法的 \(r\) 具有单调性。设最小的使 \(l\) 合法的 \(r\) 为 \(R_l\),则区间 \([q_l,q_r]\) 当 \(R_{q_l} \le q_r\) 时合法。

现在多加了一个 \(X\) 的限制,可以移动 \([q_l,q_r]\) 到 \([q_l',q_r']\)。
当 \(l\) 单增时 \(R_l\) 不降,故有 \(q_l' \le q_l\)。
\(q_l'\) 固定后 \(q_r'\) 越大越好,故有 \(q_r' = q_l'+q_r-q_l+X\)。
\([q_l',q_r']\) 确定时只需要判断 \(R{q_l'}\) 是否符合条件即可。

问题变成对于 \(q_l-X \le q_l' \le q_l\) 判断是否存在 \(q_l'\) 满足 \(R_{q_l'}\le q_r'\)。由于 \([q_l',q_r']\) 长度一定,则变为判断是否存在 \(R_{q_l'}-q_l' \le q_r-q_l+X\),维护区间最小值即可。

代码

const int N = 3e5+10,M = 4e5+10,INF = 0x3f3f3f3f;
int n,m,C,T;
int b[N+M*2],idx,R[N+M*2];
struct Query{int l,r,k;
}q[M];
struct Ed{int u,v,c;
}edge[N];
vector <int> ed[N+M*2];
int tr[N*4+M*8];
inline void build(int p,int nl,int nr){if(nl==nr){tr[p] = b[R[nl]];return ;}int mid = (nl+nr) >> 1;build(p<<1,nl,mid);build(p<<1|1,mid+1,nr);tr[p] = Min(tr[p<<1],tr[p<<1|1]);
}
inline void update(int p,int nl,int nr,int x,int k){if(nl==nr){tr[p] += k;return ;}int mid = (nl+nr) >> 1;if(x<=mid) update(p<<1,nl,mid,x,k);else update(p<<1|1,mid+1,nr,x,k);tr[p] = Min(tr[p<<1],tr[p<<1|1]);
}
inline int query(int p,int nl,int nr,int ql,int qr){if(ql>qr) return INF+INF;if(ql<=nl && nr<=qr) return tr[p];int mid = (nl+nr) >> 1;int res = INF+INF;if(ql<=mid) res = Min(res,query(p<<1,nl,mid,ql,qr));if(qr>mid) res = Min(res,query(p<<1|1,mid+1,nr,ql,qr));return res;
}
int main(){// freopen("in.in","r",stdin); // freopen("out.out","w",stdout);read(n,m,C);for(int i=1,u,v,c;i<=m;++i){read(u,v,c);edge[i] = {u,v,c};b[++idx] = c;}read(T);for(int i=1,l,r,k;i<=T;++i){read(l,r,k);q[i] = {l,r,k};b[++idx] = l;b[++idx] = Max(1,l-k);}sort(b+1,b+1+idx);idx = unique(b+1,b+1+idx)-(b+1);b[idx+1] = INF+INF;for(int i=1;i<=m;++i){edge[i].c = lower_bound(b+1,b+1+idx,edge[i].c)-b;ed[edge[i].c].push_back(edge[i].v);}for(int i=1,now = 0;i<=idx;++i){while(query(1,1,n,2,n)<=0 && now+1<=idx+1){++now;for(int j=(int)ed[now].size()-1;j>=0;--j){update(1,1,n,ed[now][j],1);}}R[i] = now;for(int j=(int)ed[i].size()-1;j>=0;--j){update(1,1,n,ed[i][j],-1);}}build(1,1,idx);for(int i=1,l,r;i<=T;++i){l = lower_bound(b+1,b+1+idx,Max(1,q[i].l-q[i].k))-b;r = lower_bound(b+1,b+1+idx,q[i].l)-b;(query(1,1,idx,l,r)<=q[i].r-q[i].l+q[i].k) ? puts("Yes") : puts("No");}// fclose(stdin);// fclose(stdout);return 0;
}

相关新闻

  • 非线性序列密码结构
  • 2025/11/15
  • LoongOS 上传文件

最新新闻

  • 图像去阴影:基于语义与几何引导的三阶段级联优化方法详解
  • 2026上海劳动合同纠纷顾问推荐指南:从解除关系到赔偿全覆盖,明伦律所实力推荐 - 本地品牌推荐
  • EchoRemote:射频模块图形化配置与自动化测试实战指南
  • BAGEL基准测试:用动物学知识评估大语言模型的垂直领域能力
  • JavaScript开发者必须掌握的Big O直觉与实战优化
  • 基于矢量干涉整形的单次曝光无散斑全息技术原理与应用

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号