zoukankan      html  css  js  c++  java
  • 并不对劲的loj2332

    传送门->

    维护海拔的差分数组。

    h[i]表示海拔的差分数组,dt[i]表示温度的差分数组。

    #include<algorithm>
    #include<cmath>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<ctime>
    #include<iomanip>
    #include<iostream>
    #include<map>
    #include<queue>
    #include<stack>
    #include<vector>
    #define rep(i,x,y) for(register int i=(x);i<=(y);i++)
    #define dwn(i,x,y) for(register int i=(x);i>=(y);i--)
    #define maxn 200010
    #define LL long long
    #define ls (u<<1)
    #define rs (u<<1|1)
    #define mi (l+r>>1)
    using namespace std;
    int read()
    {
    	int x=0,f=1;char ch=getchar();
    	while(!isdigit(ch)&&ch!='-')ch=getchar();
    	if(ch=='-')f=-1,ch=getchar();
    	while(isdigit(ch))x=(x<<1)+(x<<3)+ch-'0',ch=getchar();
    	return x*f;
    }
    void write(LL x)
    {
    	int f=0;char ch[20];
    	if(!x){putchar('0'),putchar('
    ');return;}
    	if(x<0)x=-x,putchar('-');
    	while(x)ch[++f]=x%10+'0',x/=10;
    	while(f)putchar(ch[f--]);
    	putchar('
    ');
    }
    int n,q;
    LL s,t,h[maxn],dt[maxn],ans;
    int main()
    {
    	n=read(),q=read(),s=read(),t=read();
    	rep(i,0,n)h[i]=read();
    	dwn(i,n,1)h[i]=h[i-1]-h[i];
    	rep(i,1,n)dt[i]=h[i]<0?h[i]*s:h[i]*t,ans+=dt[i];
    	while(q--)
    	{
    		int L=read(),R=read(),X=read();
    		LL dtL=dt[L],dtR=dt[R+1];
    		h[L]-=X,h[R+1]+=X;
    		dt[L]=h[L]<0?h[L]*s:h[L]*t;
    		if(R+1<=n)dt[R+1]=h[R+1]<0?h[R+1]*s:h[R+1]*t;
    		ans+=dt[L]+dt[R+1]-dtL-dtR;
    		write(ans);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    Celery ---- 分布式队列神器 ---- 入门
    如何使用Python快速制作可视化报表----pyecharts
    django 使用 可视化包-Pyechart
    git & github 快速入门
    开发效率进阶
    windows编译 obs-studio
    python 控制vbox虚拟机
    pyqt实践——从裸机到打包安装
    测试darwin calendar 服务器
    centos 搭建 darwin calendar 服务器
  • 原文地址:https://www.cnblogs.com/xzyf/p/9671321.html
Copyright © 2011-2022 走看看