题目链接戳这

如果只是从尾端插入,那么问题就是基础的:求取栈内最大值的问题,这用单调栈解决即可。

但是前端也能插入,一般的单调栈已经不能满足。那么想象,如果在前端插入一个小值,相当于在栈底多加一个值罢了。但若加入一个大值呢?则需要把栈底的元素从下面逐个取出来,相当于这些比当前要插入的值“不曾存在过”,再从前端插入当前值。

由于涉及从前端插入,那么用双端队列实现双端的单调栈即可。

#include <stdio.h>
#include <deque>
using namespace std; #define ll long long
#define pb push_back
#define pf push_front const ll maxN=1e7+;
ll n, A, B, C, x, a, b, MOD;
ll M = 1e9 + , ans;
deque<ll> dq, stk; int main() {
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
#endif
scanf("%lld%lld%lld%lld %lld%lld%lld%lld",
&n, &A, &B, &C, &x, &a, &b, &MOD);
ans = ;
for (ll i = ; i <= n; ++i) {
x = (x * a + b) % MOD;
ll xabc = x % (A + B + C);
if (xabc < A || dq.size() <= ) {
dq.pb(x);
if (stk.empty() || x >= stk.back())
stk.push_back(x);
ans = (ans + stk.back()) % M;
} else if (A <= xabc && xabc < A + B){
dq.pf(x);
while (stk.size() && x > stk.front())
stk.pop_front();
stk.push_front(x);
ans = (ans + stk.back()) % M;
} else if (A + B <= xabc) {
ll out = dq.back();
dq.pop_back();
if (out == stk.back())
stk.pop_back();
ans = (ans + stk.back()) % M;
}
}
printf("%lld\n", ans);
return ;
}

最新文章

  1. android xml中的xliff属性
  2. Linux磁盘管理之逻辑结构主引导扇区02
  3. Android 使用Okhttp/Retrofit持久化cookie的简便方式
  4. 开通了cnblogs
  5. http 303 307 302 状态码理解
  6. Ajax风格的一款网页Loading效果
  7. 软中断&amp;amp;tasklet&amp;amp;工作队列
  8. 【java】彩票中奖码生成器:java.util.Random里的方法public int nextInt(int bound)
  9. 洛谷 P1129 解题报告
  10. WPF 10天修炼 第一天- 入门
  11. jQuery之Deferred对象P2
  12. gb2312提交的url编码转换成utf8的查询
  13. python中执行shell的两种方法总结
  14. 基于LSD的直线提取算法
  15. js插件---bootstrap插件daterangepicker是什么
  16. spring mvc实现接口参数统一更改
  17. JQ 确定与取消弹出框,选择确定执行Ajax
  18. python数据分析笔记——数据加载与整理]
  19. WPF中触发器(Trigger、DataTrigger)使用动画最简单的方式EnterActions和ExitsActions
  20. hdu 5185 动态规划 分析降低复杂度

热门文章

  1. 使用Microsoft Azure云平台中的Service Bus 中继 Intanet环境下的WCF服务。
  2. 数组相关方法积累(vue\ag等特别常用)
  3. Orchard源码:缓存设计
  4. Knockout.js Text绑定
  5. JSON 教程
  6. 阿里云服务器windows server流量不大的情况下,tomcat经常出现访问阻塞,手动ctrl+c或者点击右键又访问正常
  7. 撩课-Java每天10道面试题第1天
  8. webpack打包踩坑之TypeError: Cannot read property &#39;bindings&#39; of null
  9. 基于jQuery的数字键盘插件
  10. BZOJ1014 [JSOI2008]火星人