LYK有一个栈,众所周知的是这个数据结构的特性是后进先出的。

LYK感觉这样子不太美妙,于是它决定在这个前提下将其改进,也就是说,每次插入元素时,可以在栈顶或者栈底插入,删除元素时,只能在栈顶删除。
LYK想知道每次执行完操作后当前栈中元素的最大值是多少。

第一行一个数n表示操作次数。
接下来n行,每行两个数a。若a<=1,则接下来输入一个数b。
若a=0,则在栈顶插入一个数b。
若a=1,则在栈底插入一个数b。
若a=2,则在栈顶删除一个数。

每次操作后,输出当前栈中元素的最大值是多少。
保证任意时刻栈中至少含有一个数。

由于操作数实在太多了。
于是你可以采取这种方式读入所有操作。
读入8个参数n,A,B,C,x0,a,b,MOD。 0<=A,B,C<=100000,A+B+C>0,0<=x0,a,b<=10^9,1<=MOD<=10^9,1<=n<=10000000。
有xi=(xi−1∗a+b)%MOD


对于第i次操作,若xi%(A+B+C)<A或者当前栈中元素<=1,则a=0,且b=xi。若A<=xi%(A+B+C)<A+B,则a=1,且b=xi,若A+B<=xi%(A+B+C),则a=2。

输出可能很大,只需输出将所有答案的总和对1e9+7取模后的结果即可。

 
样例解释:
对应的xi:1 4 0 2 1
对应的操作:
0 1
0 4
0 0
2
1 1
 
对应的答案:
1
4
4
4
4
Input
一行8个参数,n,A,B,C,x0,a,b,MOD
Output
一行表示答案总和对1e9+7取模后的结果
Input示例
5 1 1 1 2 2 2 5
Output示例
17

模仿的这里

 
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=1e7+;
const int P=1e9+;
int n,a[N],b[N];
int q[N*],head,tail,st[N*],first,last;
ll A,B,C,x,aa,bb,mod;
int main(){
scanf("%I64d%I64d%I64d%I64d%I64d%I64d%I64d%I64d",&n,&A,&B,&C,&x,&aa,&bb,&mod);
for(int i=,tot=;i<=n;++i) {
x=(x*aa+bb)%mod;
ll xx=x%(A+B+C);
if(tot<=||xx<A) a[i]=,b[i]=x,++tot;
else if(A<=xx&&xx<A+B) a[i]=,b[i]=x,++tot;
else a[i]=,--tot;
}
head=1e7+;
first=tail=last=head;
int ans=;
for(int i=;i<=n;++i) {
if(!a[i]) {
st[++last]=b[i];
if(q[tail]<=b[i]) q[++tail]=b[i];
}
else if(a[i]==) {
st[first--]=b[i];
while(head<tail&&q[head+]<b[i]) ++head;
q[head--]=b[i];
}
else {
if(q[tail]==st[last]) --tail;
--last;
}
ans=(ans+q[tail])%P;
}
printf("%d\n",ans);
}

51Nod栈的更多相关文章

  1. 51Nod 1289 大鱼吃小鱼 栈模拟 思路

    1289 大鱼吃小鱼 栈模拟 思路 题目链接 https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289 思路: 用栈来模拟 ...

  2. 51nod 1437 迈克步(单调栈)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1437 题意: 思路: 单调栈题.求出以每个数为区间最大值的区间范围即可. ...

  3. 51nod 1102 面积最大的矩形 (单调栈)

    链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 思路: 首先介绍下单调栈的功能:利用单调栈,可以找到从左/ ...

  4. 51nod 1102 面积最大的矩形(单调栈)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 题意: 思路: 做法就是求出每个长方形向左向右所能延伸的最大距离. ...

  5. 51nod 1279 单调栈

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1279 1279 扔盘子 题目来源: Codility 基准时间限制:1 ...

  6. 51nod 1215 单调栈/迭代

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1215 1215 数组的宽度 题目来源: Javaman 基准时间限制:1 ...

  7. 51nod 1102 单调栈

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1102 1102 面积最大的矩形 基准时间限制:1 秒 空间限制:1310 ...

  8. 51Nod 1158 全是1的最大子矩阵 —— 预处理 + 暴力枚举 or 单调栈

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1158 1158 全是1的最大子矩阵  基准时间限制:1 秒 空 ...

  9. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))

    前置问题:51nod 1102 面积最大的矩形 附上链接: 51nod 1102 面积最大的矩形 这题的题解博客 需要了解的知识:单调栈,在前置问题中已经讲解. 解题思路 对每行求左边连续1的个数,得 ...

随机推荐

  1. 都2020年了,这5个java IDE神器你还不知道?

    TIOBE的4月份编程语言排行榜出来了,java还是稳坐第一位,java最新的版本也到了13,一直以来java凭借其企业级应用的优势和大量的框架级应用俘获了大量的粉丝和企业客户. 谈到开发者,java ...

  2. Docker安装Alibaba Nacos教程(单机)

    SpringCloudAlibaba实战教程系列 阿里巴巴Nacos官方文档 docker:官网 docker:镜像官网:镜像官网可以所有应用,选择安装环境:会给出安装命令,例如:docker pul ...

  3. tensor的复制函数torch.repeat_interleave()

    1. repeat_interleave(self: Tensor, repeats: _int, dim: Optional[_int]=None) 参数说明: self: 传入的数据为tensor ...

  4. 自定义View之Canvas使用

    自定义View的绘制流程一般都是这样:提前创建好Paint对象,重写onDraw(),把绘制代码卸载ondraw()里面,大致如下: Paint paint = new Paint(); @Overr ...

  5. 求x>0时,y=x^3-6x^2+15的极值

    解: 当x→∞时,y也→∞,所以y没有最大值. y=x3-6x2+15=-4*(x/2)*(x/2)*(6-x)+15 而根据几何平均数小于等于算术平均数的定理,(x/2)*(x/2)*(6-x)在x ...

  6. 网速慢?不!可能是DNS出了问题! 公共DNS优选之 BAT 百度、腾讯、阿里、谷歌DNS哪个更快?

    如果一下还是解决不了你的问题请这边走 首先是Google的DNS: 8.8.8.8 丢包严重 PASS但是扶墙的时候是必备的,如果有扶墙的需求的话可以备用. 二.百度DNS 180.76.76.76 ...

  7. CF786B Legacy(线段树优化建边)

    模板题CF786B Legacy 先说算法 如果需要有n个点需要建图 给m个需要建边的信息,从单点(或区间内所有点)向一区间所有点连边 如果暴力建图复杂度\(mn^2\) 以单点连向区间为例,在n个点 ...

  8. idea 将项目托管到 Git 报错:Can't finish Gitee sharing process

    在idea中报: Can't finish Gitee sharing processSuccssully created project 'dmp' on Gitee. but initial co ...

  9. Redux在项目中的文件结构

    React + Redux   今天我们来唠唠在React一般项目中,使用Redux进行状态管理的时候,相对的如何存放reducer.action.api之类文件的结构与使用时机吧.本章默认看官们已经 ...

  10. 如何使用Golang实现一个API网关

    你是否也存在过这样的需求,想要公开一个接口到网络上.但是还得加点权限,否则被人乱调用就不好了.这个权限验证的过程,最好越简单越好,可能只是对比两个字符串相等就够了.一般情况下我们遇到这种需要,就是在函 ...