首先本题的关键是一次性加0操作只有第一个0是有用的。然后对于1 k操作,其实就是把之前的所有数删除。对于其他的情况,维护一次函数的和,将(i,a[i])看成平面上的一个点,用单调栈维护一下。

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+;
#define int long long
typedef pair<int,int>pii;
int n,k,b,Q,top;
pii st[N];
long double getk(pii a,pii b){return 1.0*(b.second-a.second)/(a.first-b.first);}
int calc(pii a){return(a.first-)*k+a.second+b;}
signed main()
{
scanf("%lld%lld",&n,&Q);
st[top=]=pii(,);
while(Q--)
{
int op,x,y;scanf("%lld%lld",&op,&x);
if(op==)st[top=]=pii(,),k=b=,n+=x;
else if(op==)
{
pii u=pii(n+,-calc(pii(n+,)));
while(top>&&getk(u,st[top])>=getk(st[top],st[top-]))--top;
st[++top]=u,n+=x;
}
else scanf("%lld",&y),b+=x,k+=y;
while(top>&&calc(st[top])>=calc(st[top-]))--top;
printf("%lld %lld\n",st[top].first,calc(st[top]));
}
}

CF1137E Train Car Selection(单调栈维护凸函数)的更多相关文章

  1. LOJ #2769 -「ROI 2017 Day 1」前往大都会(单调栈维护斜率优化)

    LOJ 题面传送门 orz 斜率优化-- 模拟赛时被这题送走了,所以来写篇题解( 首先这个最短路的求法是 trivial 的,直接一遍 dijkstra 即可( 重点在于怎样求第二问.注意到这个第二问 ...

  2. bzoj1007: [HNOI2008]水平可见直线 单调栈维护凸壳

    在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的.例如,对于直线:L1:y=x; L2:y=-x; L3 ...

  3. 【bzoj5089】最大连续子段和 分块+单调栈维护凸包

    题目描述 给出一个长度为 n 的序列,要求支持如下两种操作: A  l  r  x :将 [l,r] 区间内的所有数加上 x : Q  l  r : 询问 [l,r] 区间的最大连续子段和. 其中,一 ...

  4. [CSP-S模拟测试]:A(单调栈维护凸包+二分答案)

    题目传送门(内部题150) 输入格式 第一行两个整数$N,Q$. 接下来的$N$行,每行两个整数$a_i,b_i$. 接下来的$Q$行,每行一个整数$x$. 输出格式 对于每个询问,输出一行一个整数表 ...

  5. 翻转长方形 (不知名oj中一道个人私题)--单调栈维护最大子矩形

    怎么分析这道题呢? 首先 ,我们注意到一点: 不管怎么操作,任意一个2*2方格中的 "#"个数的奇偶性是不变的. 所以,如果一个2*2方格中有奇数个"#",这个 ...

  6. Lost My Music:倍增实现可持久化单调栈维护凸包

    题目就是求树上每个节点的所有祖先中(ci-cj)/(dj-di)的最小值. 那么就是(ci-cj)/(di-dj)的最大值了. 对于每一个点,它的(ci,di)都是二维坐标系里的一个点 要求的就是祖先 ...

  7. [CF1137E]Train Car Selection[维护凸壳]

    题意 题目链接 分析 首先,如果加到了车头所有之前的车厢都不可能成为答案. 如果加到了车尾,容易发现对于 \(x_2<x_3\) 而言在某个时刻会出现 2 又比 3 优的情况. 具体来讲,如果存 ...

  8. HDU 5033 (单调栈维护凸包) Building

    题意: 一个人在x轴上,他的左右两侧都有高楼,给出楼的横坐标Xi和高度Hi还有人的位置pos,求人所能看到的天空的最大角度. 分析: 将建筑物和人的位置从左到右排序,对于每个位置利用栈求一次人左边建筑 ...

  9. HDU 5033 Building(单调栈维护凸包)

    盗张图:来自http://blog.csdn.net/xuechelingxiao/article/details/39494433 题目大意:有一排建筑物坐落在一条直线上,每个建筑物都有一定的高度, ...

随机推荐

  1. PowerDesigner 破解版,汉化包!

    链接:https://pan.baidu.com/s/1R_6g6keo2Y4_V0c1ImeFbA  密码:ncju

  2. mini2440 裸机程序下载到 sdram 不能运行。

    今天在 写了个简单的 led 的汇编程序,下载到 mini2440 的 nand flash 里面可以正常运行,但是下载到 sdram 里面不能运行. 后来发现有几个注意点, 要在 sdram 中运行 ...

  3. API网关,让您和Serverless再近一步

    从软件行业诞生之日起,技术和业务总是相辅相成.业务的创新促进着软件架构从最早期的单体架构.分布式架构,转变到了如今火热的微服务架构,以及云时代下诞生的Serverless架构.API网关作为单体应用和 ...

  4. SASS - 语法

    SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...

  5. Android自定义View——贝塞尔曲线实现水波纹效果

    我们使用到的是Path类的quadTo(x1, y1, x2, y2)方法,属于二阶贝塞尔曲线,使用一张图来展示二阶贝塞尔曲线,这里的(x1,y1)是控制点,(x2,y2)是终止点,起始点默认是Pat ...

  6. 解决vue-cli3不停请求 /sockjs-node/info?t= 问题

    使用cli3会遇到一直报错get不到/sockjs-node/info?t= 的问题: 如果你的项目没有用到 sockjs,那么就找到报错的地方,将其注释掉即可. 路径在/node_modules/s ...

  7. cat <<EOF> file

    .多行导入文件(新建文件或者覆盖文件内容)   cat << EOF > abcd.txt Hello! This is a test file! Test for cat and ...

  8. 理解String的intern()方法

    API文档中的介绍: intern public String intern() Returns a canonical representation for the string object. A ...

  9. Cookie的作用范围、设置、创建、获取的方法

    cookie的作用范围 同一浏览器,同一路径 默认情况下, 上级目录设置的cookie,下级目录可以获取到, 而下级目录设置的cookie,上级目录不能获取. 即:在一个页面设置cookie,那么这个 ...

  10. Java反射--getDeclaredField()和getField()

     Field getField(String name)   返回当前类以及所继承的类的所有public修饰的成员变量  Field getDeclaredField(String name)   返 ...