题目地址

原题地址

题解

其实就是一个区间加,单点查询的问题

当然可以线段树/树状数组做,但是这两个做法要分类讨论所以代码会比较多

我们考虑一种更简便的做法

差分!

因为温度只和海拔差有关,这相当于题目赤裸裸的告诉我们要差分

那么我们考虑每次修改海拔对答案的影响

对于中间那一段,显然对答案的贡献是不会变的

会变的只有\(l,r+1\)这两个地方,分类讨论高低太麻烦了,我们可以先在答案中减去原来的数对答案的影响,再给答案加上修改后的数对答案的影响

代码语言即为

sum -= p(d[l]); d[l] += x; sum += p(d[l]);
//p为算影响的函数,d为差分数组,sum为答案

于是我们得到了一个预处理\(O(n)\),单次询问\(O(1)\)的算法

需要注意的一个点是,要特判\(r=n\)的情况,在这种情况下,我们只需要更改左端点即可

以及将差分数组和前缀和开longlong

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 200010
int n, m, s, t;
ll a[N], d[N];
ll sum = 0; ll p(ll x) { return x * (x > 0 ? s : t); } int main() {
scanf("%d%d%d%d", &n, &m, &s, &t);
ll L; scanf("%lld", &L);
for(int i = 1; i <= n; i ++) {
scanf("%lld", &a[i]);
d[i] = a[i] - L; L = a[i];
sum += p(d[i]);
}
for(int i = 1; i <= m; i ++) {
int l, r; ll x;
scanf("%d%d%lld", &l, &r, &x);
sum -= p(d[l]); d[l] += x; sum += p(d[l]);
if(r == n) {printf("%lld\n", -sum); continue;}
sum -= p(d[r + 1]); d[r + 1] -= x; sum += p(d[r + 1]);
printf("%lld\n", -sum);
}
return 0;
}

AT2442 フェーン現象 (Foehn Phenomena)的更多相关文章

  1. 差分模版题(需理解才明白)AT2442 フェーン現象 (Foehn Phenomena)

    https://www.luogu.org/problemnew/show/AT2442 #include <bits/stdc++.h> #define read read() #def ...

  2. 2019.2-2019.3 TO-DO LIST

    DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...

  3. Jquery scrollTop animate 實現動態滾動到頁面頂部

    這個方法之前都是用的錨點實現的,但是效果僵硬,動感不足! 之後參考了一些網站,發現都是用的js,於是自己想到用jquery 來做一個插件也來實現以下這個小功能. $.fn.backTop = func ...

  4. Nobel Lecture, December 12, 1929 Thermionic phenomena and the laws which govern them

    http://www.nobelprize.org/nobel_prizes/physics/laureates/1928/richardson-lecture.pdf OWEN W. RICHARD ...

  5. Portal Page的呈現

    先看一下在JSR168中提到的Portal page,可以了解一個Portal Page上大概有哪些element: OK...進入本次主題 PSML:PSML的全名是Portal Structure ...

  6. 可以支持jQuery1.10.1 的 fancybox 1.3.4, 並現在type為Ajax時,也可以定義窗口的大小。

    官網上的 fancybox 1.3.4 太老了,不支持jQuery1.10.1,改動了一下源碼,現在可以支持了. type為Ajax時,也可以定義窗口的大小. $("#ajaxlink&qu ...

  7. linux下c++實現簡單的生產者消費者隊列模式

    引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...

  8. ASP.NET MVC 4.0 学习2-留言板實現

    新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案   2,添加數據庫文件message.mdf   Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...

  9. 八皇后問題 (C語言递归實現 回溯法)

    八皇后问题是一个以国际象棋为背景的问题:怎样可以在 8×8 的国际象棋棋盘上放置八个皇后,使得不论什么一个皇后都无法直接吃掉其它的皇后?为了达到此目的.任两个皇后都不能处于同一条横行.纵行或斜线上.現 ...

随机推荐

  1. 06 str() bytes() 编码转换

    x = str() #创建字符串#转换成字符串,字节,编码 m = bytes()#创建字节#转换成字节,字符串,要编程什么编码类型的字节 a = "李露" b1 = bytes( ...

  2. uva 11354 Bond

    题意: 邦德在逃命!他在一个有N个城市,由M条边连接的道路网中.一条路的危险度被定义为这条路上危险度最大的边的危险度. 现在给出若干个询问,s,t,问从s到t的最小的危险度是多少. 思路: 首先可以证 ...

  3. MVC 翻頁的那些坑

    思绪良久,最后还是决定记录一下遇到的坑,毕竟被 ‘折磨’ 了三天,关于分页,这个话题,我一开始时拒绝的,因为真正接触项目的时候,才发现每个框架都会封装一套自己的分页,毕竟相同风格的项目是不常见的,而在 ...

  4. python urlopen

    Python urllib 库提供了一个从指定的 URL 地址获取网页数据,然后对其进行分析处理,获取想要的数据. urlopen返回 一个类文件对象(fd),它提供了如下方法:read() , re ...

  5. Redis入门——安装与基本命令

    1. Redis安装 下载地址:https://github.com/MSOpenTech/redis/releases 下载zip文件后直接解压 2. 启动Redis服务端 解压目录下执行redis ...

  6. MongoDB3.X单机及shading cluster集群的权限管理(基于3.4.5)

    mongodb集群的权限管理分为两部分,一部分是最常用的Role-Based Access Control,也就是用户名密码方式,这种验证方式一般出现在单机系统,或者集群中client端连接Mongo ...

  7. 20165316 实验一 Java开发环境的熟悉

    实验一 Java开发环境的熟悉 基础-Java环境的构建和简单程序 实验要求 建立"自己学号exp1"的目录 在"自己学号exp1"目录下建立src,bin等目 ...

  8. Django框架----视图(views)

    Django的Views(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误 ...

  9. nfs共享文件搭建

    Linux NFS服务器的安装与配置详解 一.NFS服务简介  NFS是Network  File System(网络文件系统).主要功能是通过网络让不同的服务器之间可以共享文件或者目录.NFS客户端 ...

  10. apiCloud中的API对象

    1.属性 appId apiready = function () { var appId = api.appId; //比如: A6980386445546 var appName = api.ap ...