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

P14400 [JOISC 2016] 回转寿司 / Sushi

P14400 [JOISC 2016] 回转寿司 / Sushi
📅 发布时间:2026/6/18 13:37:07

题意简介

给定一个长度为 \(n\) 的环状数组,每次询问给出 \(l,r,x\),依次遍历 \(i = l , \cdots , r\)(如果 \(l > r\),从 \(l\) 遍历到 \(n\),再从 \(1\) 遍历到 \(r\)),若 \(a_i > x\),则交换二者的值,输出最终 \(x\) 的值,询问之间不互相独立。

思路

每次询问的答案是显然的,\(x = \max \limits_{ i = l } ^ r a_i\),对于 \(a\) 数组的改变,如果每次暴力修改,时间复杂度 \(\mathcal{ O ( n q ) }\),不可接受。数据范围 \(N_{max} = 4 \times 10^5\),考虑分块,对每个块维护一个大根堆,那么块内每次更新后有哪些元素很好维护,只需将堆顶与 \(x\) 交换即可,关键在于如何对应每个元素所在的位置。

在对同一个块询问的所有 \(x\) 里取最小的一个记为 \(t\),若 \(a_i < x\),则用 \(a_i\) 替换 \(x\),于是我们可以对每个块维护一个小根堆,记录对这个块的所有操作,遍历块中元素对应更新即可。

时间复杂度 \(\mathcal{ O ( q \sqrt{ n } \log n ) }\)。

Code

#include<iostream>
#include<queue>
#include<cmath>
#include<vector>
#include<utility>
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=4e5+5;
const int N_SQRT=655;
int n,blo,Q,val[N],bl[N];
priority_queue<int,vector<int>,less<int>>Ele[N_SQRT];
priority_queue<int,vector<int>,greater<int>>Ask[N_SQRT];
void Rebuild(int x)
{if(Ask[x].empty()) return;for(int i=(x-1)*blo+1;i<=min(n,x*blo);i++)if(val[i]>Ask[x].top())Ask[x].push(val[i]),val[i]=Ask[x].top(),Ask[x].pop();while(!Ask[x].empty()) Ask[x].pop();
}
void Insert(int x)
{while(!Ele[x].empty()) Ele[x].pop();for(int i=(x-1)*blo+1;i<=min(n,x*blo);i++)Ele[x].push(val[i]);
}
int Query(int L,int R,int x)
{Rebuild(bl[L]);for(int i=L;i<=min(R,bl[L]*blo);i++)if(x<val[i]) swap(x,val[i]);Insert(bl[L]);for(int i=bl[L]+1;i<=bl[R]-1;i++){if(x>=Ele[i].top()) continue;Ask[i].push(x),Ele[i].push(x);x=Ele[i].top(),Ele[i].pop();}if(bl[L]!=bl[R]){Rebuild(bl[R]);for(int i=(bl[R]-1)*blo+1;i<=R;i++)if(x<val[i]) swap(x,val[i]);Insert(bl[R]);}return x;
}
int main()
{IOS;cin>>n>>Q;blo=sqrt(n);for(int i=1;i<=n;i++)cin>>val[i],bl[i]=(i-1)/blo+1,Ele[bl[i]].push(val[i]);while(Q--){int L,R,x;cin>>L>>R>>x;if(L>R) cout<<Query(1,R,Query(L,n,x))<<'\n';else cout<<Query(L,R,x)<<'\n';}return 0;
}

完结撒花~

相关新闻

  • 灰度的openkruise rollout - Super
  • P6532 [COCI 2015/2016 #1] TOPOVI
  • 【每日一面】BOM 是什么

最新新闻

  • 混淆矩阵实战指南:从医疗诊断看分类模型评估本质
  • AI Studio实战指南:从提示词到可交付产品的完整工作流
  • 30+种音视频格式全免费转!2026在线保姆级大合集,这一篇够了 - 时时资讯
  • BoTorch实战指南:PyTorch原生贝叶斯优化原理与工程落地
  • Microchip嵌入式开发资源地图:从官方支持到实战工具链全解析
  • 多维聚合实战:从pandas滚动窗口到业务可解释指标

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

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

关于尧图

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

服务项目

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

快速链接

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

联系方式

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

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