Libre OJ P2332「JOI 2017 Final」焚风现象【差分思想】By cellur925

题目传送门

这道题开始看起来会很晕...\(qwq\)。首先我们要明确题目中的海拔&&温度。温度是受海拔影响的,每次改变的是海拔,我们求的是温度。

我们开始读入的时候便可以处理出开始\(N\)位置的温度以及各个位置的海拔差。每次读入影响的是一段区间,区间内的相对海拔是不变的因此温度也不会变。只有区间的边界可能受到影响。因此我们只要处理边界就行了:这便是差分的思想

比如有\([l,r]\)区间需要处理,那么我们把\(l\)位置的原答案减去,把\(l\)位置的海拔改变,并加上新答案。再对\(r+1\)位置做类似的处理,其他部分不会受到影响。

\(Code\)

#include<cstdio>
#include<algorithm>

using namespace std;
typedef long long ll;

int n,Q,las;
ll s,t,ans,a[200090];

ll cal(ll x)
{
    return x>0 ? -x*s : -x*t;
}

int main()
{
    scanf("%d%d%lld%lld",&n,&Q,&s,&t);
    scanf("%d",&las);
    for(int i=1;i<=n;i++)
    {
        int x=0;
        scanf("%d",&x);
        a[i]=x-las;
        las=x;
        ans+=cal(a[i]);
    }
    while(Q--)
    {
        int x=0,y=0,z=0;
        scanf("%d%d%d",&x,&y,&z);
        ans-=cal(a[x]);
        a[x]+=z;
        ans+=cal(a[x]);
        if(y==n){printf("%lld\n",ans);continue;}
        ans-=cal(a[y+1]);
        a[y+1]-=z;
        ans+=cal(a[y+1]);
        printf("%lld\n",ans);
    }
    return 0;
}

原文地址:https://www.cnblogs.com/nopartyfoucaodong/p/9897397.html

时间: 2024-08-30 07:32:29

Libre OJ P2332「JOI 2017 Final」焚风现象【差分思想】By cellur925的相关文章

loj#2334 「JOI 2017 Final」JOIOI 王国

分析 二分答案 判断左上角是否满足 为了覆盖所有范围 我们依次把右下角,左上角,右上角移动到左上角 代码 #include<bits/stdc++.h> using namespace std; int a[2010][2010],n,m,Ans=1e9+7,mx,mn=1e9+7; inline bool ck(int x){ int i,j,k,l=mn+x,r=mx-x,lim=m; for(i=1;i<=n;i++){ for(j=1;j<=lim;j++) if(a[i]

【2018.10.1】「JOI 2014 Final」年轮蛋糕

题面 一看到求“最小值的最大值”这种问题,就能想到二分了. 二分答案,然后判然后把环展开成2倍长度的链,先钦定一个起点, 原文地址:https://www.cnblogs.com/scx2015noip-as-php/p/9734669.html

loj 2759「JOI 2014 Final」飞天鼠

loj 这题有在一棵树上上升或者下降的操作,稍加分析后可以发现上升操作如果不是一定要做(指高度不足以到下一棵树或者是最后到达\(n\))就不做,下降操作也是如果不是一定要做(指到达下一棵树时高度过高)就不做,因为如果提前做了,可能会导致后面要浪费一些步数使得移动合法.然后这个移动过程就会分成两段,先是一直移动或者下降,不用上升,然后会每次上升再移动,一直到终点 先看前一段的移动,如果移动的时候正好能移到下一棵树就直接移,如果移的时候高度过高就往下移一点直到能正好移动到下一棵树上.这里对每个点记\

loj 3014「JOI 2019 Final」独特的城市

loj 我本来是直接口胡了一个意思一样的做法的,但是因为觉得有点假+实现要用并查集(?)就卡了好一会儿... 对于一个点\(x\)来说,独特的点一定在它的最长链上,如果有独特的点不在最长链上,那么最长链上一定有和他到\(x\)距离相同的点,矛盾 然后对于一个点,最长链端点一定可以是直径的两端点之一,所以如果我们分别以树的直径的两端点为根进行dfs,那么一个点在其中一次dfs中,独特的点都会在到根的路径上,所以我们用栈维护到根的点,然后不同颜色数开桶来维护,每次压栈或弹栈时改变桶内元素个数,然后根

【2018.9.20】JOI 2017 Final T3「JOIOI 王国 / The Kingdom of JOIOI」

题目描述 为了兼顾表意清楚与简洁,我翻译时脑补了 RJOIR_{JOI}R?JOI?? 和 RIOIR_{IOI}R?IOI??,所以不要问我为啥原题找不到…… JOIOI 王国是一个 HHH 行 WWW 列的长方形网格,每个 1×11\times 11×1 的子网格都是一个正方形的小区块.为了提高管理效率,我们决定把整个国家划分成两个省 JOI 和 IOI . 我们定义,两个同省的区块互相连接,意为从一个区块出发,不用穿过任何一个不同省的区块,就可以移动到另一个区块.有公共边的区块间可以任意移

【2018.9.20】JOI 2017 Final T2「準急電車 / Semiexpress」

日文原题 题目描述 JOI 铁路公司是 JOI 国唯一的铁路公司. 在某条铁路沿线共有 $N$ 座车站,依次编号为 $1...N$. 目前,正在服役的车次按照运行速度可分为两类:高速电车(简称快车)与普通电车(简称慢车). 慢车每站都停.乘慢车时,对于任意一座车站 $i(1?i<N)$,车站 $i$ 到车站$ i+1$ 用时均为 $A$. 快车只在车站 $S_1, S_2, \ldots, S_M$?? 停车 $(1=S_1<S_2<\cdots<S_M=N)$.乘快车时,对于任意

「THUSCH 2017」大魔法师 解题报告

「THUSCH 2017」大魔法师 狗体面太长,帖链接了 思路,维护一个\(1\times 4\)的答案向量表示\(A,B,C,len\),最后一个表示线段树上区间长度,然后每次的操作都有一个转移矩阵,随便搞搞就成了,卡常 Code: #include <cstdio> #include <cstring> namespace io { const int SIZE=(1<<21)+1; char ibuf[SIZE],*iS,*iT,obuf[SIZE],*oS=ob

「CSP-S模拟赛」2019第一场

目录 T1 小奇取石子 题目 考场思路 正解 T2 「CCO 2017」专业网络 题目 考场思路 题解 T3 「ZJOI2017」线段树 题目 考场思路 正解 这场考试感觉很奇怪. \(T1.T2\) 都缺一个小特判. \(T3\) 打了个比暴力优的暴力 还是暴力,但是不知道为什么 \(WA\) 穿了. 考试的时候还玩扫雷... 其实,菜是原罪啊... ___ T1 小奇取石子 题目 点这里 考场思路 刚开始差点被自己坑了,开考 \(5min\) 就码出了一个可以惨痛爆零的 \(01\) 背包.

PS抠发丝技巧 「选择并遮住…」

现在的海报设计,大多数都有模特MM,然而MM的头发实用太多了,有的还飘起来-- 对于设计师(特别是淘宝美工)没有一个强大.快速.实用的抠发丝技巧真的混不去哦.而PS CC 2017版本开始,就有了一个强大的抠图功能「选择并遮住-」,今天的Photoshop教程就以抠发丝步骤来介绍这个工具. 先看效果图: 第一步:使用快速选择工具选择人像. 第二步:从工具栏上点击「选择并遮住-」 第三步: 使用「调整边缘画笔工具」在发丝边缘涂抹,注意适当调整画笔大小.编辑:千锋UI设计 如果看不到涂沫边缘,可把「