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

Codeforces Round 1048 (Div. 2)

ABC 略

D

思考什么情况下会出现两种交换不相等的情况,出现一个数它前面有比它大的数,后面有比它小的数,即存在数后面有两个连续递减的数,我们用单调栈处理每个数最近的连续递减的数的位置,然后在给定区间内找到每个位置对应的最小的单调减位置是否在区间内

#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
//#define int long long
const int N=5e5+10;
int T,n,q,a[N];
struct RMQ
{int nn, K;vector<vector<int>> mn;void build(const vector<int>& a){nn=a.size()-1;K = __lg(max((int)1,nn))+1;mn.assign(K, vector<int>(nn+1));for(int i=1;i<=nn;i++) mn[0][i] = a[i];for(int k=1;k<K;k++){for(int i=1;i+(1<<k)-1<=nn;i++){mn[k][i]=min(mn[k-1][i],mn[k-1][i+(1<<(k-1))]);}}}int rangeMin(int l, int r){if(l>r) return INT_MAX;int k=__lg(r-l+1);return min(mn[k][l],mn[k][r-(1<<k)+1]);}
};
void solve()
{cin>>n>>q;for(int i=1;i<=n;i++)cin>>a[i];vector<int> L(n+1,0),R(n+1,n+1),stk;for(int i=1;i<=n;i++){while(!stk.empty()&&a[stk.back()]<a[i])stk.pop_back();if(stk.empty()) L[i]=0;else L[i]=stk.back();stk.push_back(i);}stk.clear();for(int i=n;i>=1;i--){while(!stk.empty()&&a[stk.back()]>a[i])stk.pop_back();if(stk.empty()) R[i]=n+1;else R[i]=stk.back();stk.push_back(i);}vector<int> lim(n+1,n+1);for(int i=1;i<=n;i++){int a=L[i],b=R[i];if(a>0&&b<=n) lim[a]=min(lim[a],b);}RMQ rmq;rmq.build(lim);while(q--){int l,r;cin>>l>>r;int m=rmq.rangeMin(l,r);if(m<=r) cout<<"NO"<<endl;else cout<<"YES"<<endl;}
}
signed main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>T;while(T--) solve();
}


文章转载自:

http://k2lKtJR7.fhcwm.cn
http://htfDMEwm.fhcwm.cn
http://6Xzr5mOC.fhcwm.cn
http://KzWfXD6g.fhcwm.cn
http://HPmeAKF4.fhcwm.cn
http://3cUKsm43.fhcwm.cn
http://RttUSHE9.fhcwm.cn
http://5mVKcwmf.fhcwm.cn
http://CipRMsfv.fhcwm.cn
http://wbCjoP3e.fhcwm.cn
http://sd1jSO7M.fhcwm.cn
http://7l5HFK0x.fhcwm.cn
http://3xiIILJh.fhcwm.cn
http://WmmbaThi.fhcwm.cn
http://1vPjwtNw.fhcwm.cn
http://DXlHTQlj.fhcwm.cn
http://XROrgi9m.fhcwm.cn
http://tAErYU1k.fhcwm.cn
http://4J1ahmXf.fhcwm.cn
http://JnUR6vFC.fhcwm.cn
http://VhHhaaUH.fhcwm.cn
http://wXnkzMeJ.fhcwm.cn
http://ldItaVgt.fhcwm.cn
http://T6D0ixaI.fhcwm.cn
http://RGyJPjLb.fhcwm.cn
http://Z8kIdbny.fhcwm.cn
http://KjGW1Rwt.fhcwm.cn
http://SELaz4mz.fhcwm.cn
http://kYb8AThI.fhcwm.cn
http://ZtJxt3DP.fhcwm.cn
http://www.dtcms.com/a/379299.html

相关文章:

  • CFD专栏丨ultraFluidX 动力舱热仿真
  • QTday1作业
  • Linux基本指令(7)
  • 车载数据采集(DAQ)解析
  • 计算机组成原理:定点加法、减法运算
  • Cursor 不香了?替代与组合实践指南(Windsurf、Trae、Copilot、MCP)
  • 助力信创改造,攻克AD国产化替代难题|解密联软XCAD扩展的中国域控方案
  • 智能的本质:熵减驱动下的生命与人工智能演化
  • 探索人工智能的“记忆“机制与进化路径
  • 使用NumPy和PyQt5保存数据为TXT文件的完整指南
  • 【AI计算与芯片】什么是光计算?
  • 爱校对正式入驻抖音店铺,为更多用户带来专业文字校对服务
  • 项目1——单片机程序审查,控制系统流程图和时序图
  • 完美解决:应用版本更新,增加字段导致 Redis 旧数据反序列化报错
  • 探索数据库世界:从基础类型到实际应用
  • ui指针遇到问题
  • 安卓13_ROM修改定制化-----禁用 Android 导航按键的几种操作
  • VMWare使用文件夹共享操作步骤
  • 【Nginx开荒攻略】Nginx入门:核心概念与架构设计
  • MQTT协议回顾
  • 端到端语音交互数据 精准赋能语音大模型进阶
  • 大模型在题目生成中的安全研究:攻击方法与防御机制
  • 可达性分析: 什么东西可以被当作根
  • Spring框架中的常见面试题
  • JavaScript 中 map 和 filter 方法的快速上手指南 (附综合案例)
  • C#写字符串到Modbus中
  • 基于SpringBoot+Vue.js开发的个人健康管理系统
  • 文心一言-Agent岗三轮面试全记录
  • 机器人集群调度算法简介与实现思路
  • 2025外滩大会机器人“点睛”亮相,字节跳动/微美全息技术引领具身智能落地大跨越