洛谷 [P1198] 最大数
首先这是一道线段树裸题,但是线段树长度不确定,那么我们可以在建树的时候,将每一个节点初始化为-INF,每次往队尾加一个元素即一次单节点更新,注意本题的数据范围,其实并不用开 long long,具体请看注释。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std;
const int MAXN=200005;
int read(){int rv=0,fh=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') fh=-1;c=getchar();}while(c>='0'&&c<='9'){rv=(rv<<1)+(rv<<3)+c-'0';c=getchar();}return rv*fh;
}
int MOD,m,t,ma[MAXN<<2],n;
void PushUp(int rt){ma[rt]=max(ma[rt<<1],ma[rt<<1|1]);
}
void build(int l,int r,int rt){if(l==r){ma[rt]=-0x7fffffff;return;}int mid=l+((r-l)>>1);build(lson);build(rson);PushUp(rt);
}
void Update(int add,int loc,int l,int r,int rt){if(r==loc&&l==loc){ma[rt]=add;return;}int mid=l+((r-l)>>1); //这样取平均数可以防溢出if(loc<=mid) Update(add,loc,lson);else Update(add,loc,rson);PushUp(rt);
}
int query(int L,int R,int l,int r,int rt){if(L<=l&&r<=R){return ma[rt];}int mid=l+((r-l)>>1);int q=-0x7fffffff;if(L<=mid){q=max(q,query(L,R,lson));}if(mid<R) q=max(q,query(L,R,rson));return q;
}
int main(){freopen("in.txt","r",stdin);m=read();MOD=read();build(1,m,1);for(int i=1;i<=m;i++){char c;scanf(" %c ",&c);int k=read();if(c=='A'){n++;k=((long long)k+t)%MOD;//注意防止溢出Update(k,n,1,m,1);}else {t=query(n-k+1,n,1,m,1);printf("%d\n",t);}}fclose(stdin);return 0;
}
等等。。本题只要求在队尾加入元素,而且要求的是队尾几个元素的最小值,那么这道题就可以用单调栈+二分来做
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=200005;
int read(){int rv=0,fh=1;char c=getchar();while(c<'0'||c>'9'){if(c=='-') fh=-1;c=getchar();}while(c>='0'&&c<='9'){rv=(rv<<1)+(rv<<3)+c-'0';c=getchar();}return rv*fh;
}
int m,MOD,t,stack[MAXN],head,num[MAXN],cnt;
int main(){freopen("in.txt","r",stdin);m=read();MOD=read();for(int i=1;i<=m;i++){char c;scanf(" %c ",&c);int k=read();if(c=='A'){k=((long long)k+t)%MOD;cnt++;while(stack[head]<=k&&head) head--;head++;stack[head]=k;num[head]=cnt;}else {int l=1,r=head,mid;k=cnt-k+1;while(l<=r){mid=(l+r)>>1;if(num[mid]<k){l=mid+1;}else {r=mid-1;}}t=stack[l];printf("%d\n",t);}}fclose(stdin);return 0;
}
转载于:https://www.cnblogs.com/Mr-WolframsMgcBox/p/7868336.html
洛谷 [P1198] 最大数相关推荐
- 洛谷 - P1198 - 最大数 - 线段树
https://www.luogu.org/problemnew/show/P1198 要问区间最大值,肯定是要用线段树的,不能用树状数组.(因为没有逆元?但是题目求的是最后一段,可以改成类似前缀和啊 ...
- 洛谷P1198 [JSOI2008]最大数
P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...
- 洛谷 - 试炼场(全部题目备份)
整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...
- 低价购买(洛谷 1108)
低价购买(洛谷 1108) 题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买& ...
- 【蓝桥杯专题】 贪心(C++ | 洛谷 | acwing | 蓝桥)
菜狗现在才开始备战蓝桥杯QAQ 文章目录 [蓝桥杯专题] (C++ | 洛谷 | acwing | 蓝桥) 1055. 股票买卖 II AcWing 104. 货仓选址 传递糖果 AcWing 112 ...
- 洛谷千题复习计划(一)(Codeforces + AtCoder)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 每天花一个小时简单复习一下我写过的洛谷的题目! 虽然还没有到千题,但是快了(等我复习完这些以后我 lu ...
- 洛谷or牛客数据结构+算法
栈思想:先进后出 tips:栈里能放下标就放下标 (牛客)小c的计事本(直接用stack可以简化代码,且不会被自己绕晕,当时没意识到) (牛客)吐泡泡(没意识到用栈),(牛客)好串 1.后缀表达式(栈 ...
- 【数学1】基础数学问题 - 题单 - 洛谷
这里写目录标题 [[数学1]基础数学问题 - 题单 - 洛谷](https://www.luogu.com.cn/training/117) [P1143 进制转换](https://www.luog ...
- 洛谷-题解 P2672 【推销员】
独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...
最新文章
- Windows Server 2012 R2工作文件夹⑤:创建工作文件夹
- 关于如何防范Ⅱ、Ⅲ类银行结算账户风险
- 《系统集成项目管理工程师》必背100个知识点-69简述合同管理的主要内容
- 有关于微软的IWebBrowser2::Navigate2/Navigate方法
- VTK:绕线旋转用法实战
- parallels desktop 缺少组件_德国警方扣留光伏组件盗贼
- web加减乘除法c#_C#的加减乘除的问题
- python实现根据文件名找出(拷贝/剪切)同名文件的不同类型文件
- e记法 python 底数_干货满满,30个Python源代码!
- access统计各职务人数_2019年一建通过人数超15万?一建证书真的不值钱了?
- Text Particle Systems
- PHP微信h5棋牌搭建sprintf()函数的使用
- raise_for_status()方法
- vue element-ui列表中el-switch 开关,使用0和1
- MySQL中的统计数据
- 三节点大数据环境安装详细教程
- (新手版)GitHub安装和配置教程for Windows(肯定看得懂)
- 物联网平台Thingsboard3.2.1源码编译记录
- java 中 webcam类_如何在Java的Swing应用程序中集成Webcam?
- 基于OpenGL的Koch分形雪花实现
热门文章
- 10个有毒的设计神器
- 生成4位验证码(后台)
- Android群英传笔记——第四章:ListView使用技巧
- lambda expressions are not supported at this language level
- 移动端事件 、zepto移动端事件
- [POJ3253]Fence Repair
- 17. javacript高级程序设计-错误处理与调试
- VerifyError: Error #1107: ABC 数据已损坏,尝试的读取操作超出范围
- 禅道项目管理软件的命令行入口
- javascript之原型与原型链