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

数据结构:栈(区间问题)

码蹄集OJ-小码哥的栈

#include<bits/stdc++.h> 
using namespace std;
#define int long long
const int N=1e6+7;
struct MOOE
{int ll,rr;
};
stack<MOOE>st;
signed main( )
{ios::sync_with_stdio(false);cin.tie(nullptr);int n;cin>>n;while(n--){int opt;cin>>opt;if(opt==1){int l,r;cin>>l>>r;st.push({l,r});}if(opt==2){int k;cin>>k;int result=0;while(k){int l=st.top().ll;int r=st.top().rr;int size=r-l+1;if(k<size){result+=(2*r-k+1)*k/2;st.pop();st.push({l,r-k});k=0;}else{result+=(l+r)*size/2;k-=size;st.pop();}}        cout<<result<<endl;}}return 0;
}

定义一个结构体MOOD变量,含有ll与rr两个成员。定义一个st栈保存节点(栈内节点可以是一个数也可以是一个范围),每次 push({l, r}) 就是把一个 MOOE 对象压栈,也就是栈内的每个节点都有两个成员。

当输入的opt为1时,将范围作为节点压入栈中。

当输入的opt为2时,要考虑k的两种情况:一种可能小于栈顶范围,一种大于栈顶范围。如果小于栈顶范围,通过等差数列求和公式得出结果;当大于栈顶范围时,只要将栈顶范围的和求出后,再pop出后,反复多次还会回到第一种情况中。在两种条件外套上大循环,当是第一种情况,循环停止,第二种情况时,将k减去pop出的节点的大小,再进入循环。

http://www.dtcms.com/a/282193.html

相关文章:

  • 2025秋招突围战:AI智能监考如何重构远程笔试公平防线?
  • API Gateway HTTP API 控制客户端访问 IP 源
  • 【用图片内容改名】水印相机拍的照片,将照片的名字批量改为水印内容,根据水印内容批量命名图片的操作步骤和注意事项
  • Java大厂面试实录:从Spring Boot到AI大模型的深度技术拷问
  • SM3算法工程中添加bouncycastle.bcprov.jdk15on库
  • 【数据结构】双链表--从原理到(用C语言)实现全解析
  • 【Linux 学习指南】网络编程基础:从 IP、端口到 Socket 与 TCP/UDP 协议详解
  • 第二十一 篇 PDF文档自动化:Python一键合并、分割、水印、提取与加密解密!你的PDF全能管家!
  • [AI-video] 字幕服务 | 视频素材服务 | 视频生成服务
  • MySQL索引及其底层原理(上)(10)
  • C++ 计数排序、归并排序、快速排序
  • SpringCloud之Config
  • Android动态获取当前应用占用的内存PSS,Java
  • 【25】MFC入门到精通——MFC静态文本框 中字符串 连续输出 不覆盖先前的文本 换行输出
  • RK3568项目(十)--linux驱动开发之基础外设与LVDS屏幕
  • spring-ai之工具调用(Tool Calling)
  • 【18】MFC入门到精通——MFC(VS2019)+ OpenCV 显示图片的3种方法
  • Linux Java环境配置
  • xss-labs 1-8关
  • 智芯Z20K11xM MCU开发之TDG触发Adc
  • 新疆兵团第六师新湖农场食记
  • 企业级AI项目未达预期:非结构化数据处理背后有何玄机?
  • es启动问题解决
  • Python 日志轮换处理器的参数详解
  • 元宇宙经济:虚实融合引发经济新变革
  • audiorecord 之 抢占优先级
  • 【世纪龙科技】汽车发动机拆装检修仿真教学软件-仿真精进技能
  • JAVA进阶 项目实战:汽车租聘系统
  • 黄仁勋:早知道雷军会有非凡成功,想买一辆小米汽车
  • 汽车免拆诊断案例 | 2015款进口起亚索兰托L车漏电