AT2442 フェーン現象 (Foehn Phenomena)
题目地址
题解
其实就是一个区间加,单点查询的问题
当然可以线段树/树状数组做,但是这两个做法要分类讨论所以代码会比较多
我们考虑一种更简便的做法
差分!
因为温度只和海拔差有关,这相当于题目赤裸裸的告诉我们要差分
那么我们考虑每次修改海拔对答案的影响
对于中间那一段,显然对答案的贡献是不会变的
会变的只有\(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)的更多相关文章
- 差分模版题(需理解才明白)AT2442 フェーン現象 (Foehn Phenomena)
https://www.luogu.org/problemnew/show/AT2442 #include <bits/stdc++.h> #define read read() #def ...
- 2019.2-2019.3 TO-DO LIST
DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) ...
- Jquery scrollTop animate 實現動態滾動到頁面頂部
這個方法之前都是用的錨點實現的,但是效果僵硬,動感不足! 之後參考了一些網站,發現都是用的js,於是自己想到用jquery 來做一個插件也來實現以下這個小功能. $.fn.backTop = func ...
- 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 ...
- Portal Page的呈現
先看一下在JSR168中提到的Portal page,可以了解一個Portal Page上大概有哪些element: OK...進入本次主題 PSML:PSML的全名是Portal Structure ...
- 可以支持jQuery1.10.1 的 fancybox 1.3.4, 並現在type為Ajax時,也可以定義窗口的大小。
官網上的 fancybox 1.3.4 太老了,不支持jQuery1.10.1,改動了一下源碼,現在可以支持了. type為Ajax時,也可以定義窗口的大小. $("#ajaxlink&qu ...
- linux下c++實現簡單的生產者消費者隊列模式
引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區 ...
- ASP.NET MVC 4.0 学习2-留言板實現
新增專案實現留言板功能,瞭解MVC的運行機制 1,新增專案 2,添加數據庫文件message.mdf Ctrl+W,L 打開資料庫連接,添加存放留言的Atricle表 添加字段,後點擊&quo ...
- 八皇后問題 (C語言递归實現 回溯法)
八皇后问题是一个以国际象棋为背景的问题:怎样可以在 8×8 的国际象棋棋盘上放置八个皇后,使得不论什么一个皇后都无法直接吃掉其它的皇后?为了达到此目的.任两个皇后都不能处于同一条横行.纵行或斜线上.現 ...
随机推荐
- jQuery选择器--#id、element和.class
#id 描述 根据给定的ID匹配一个元素.使用任何的元字符作为名称的文本部分, 它必须被两个反斜杠转义:\\ 参数 id 用于搜索的,通过元素的 id 属性中给定的值 element 概述 根 ...
- 集合List
//数组 存值长度固定,类型固定 //集合 长度不固定,类型也可以不固定 List<int> list = new List<int>(); //list.Add(78); ; ...
- 主流的Nosql数据库的对比
主流的Nosql数据库的对比 MongoDB,Cassandra,CouchDB,Hypertable, Redis,Riak,Neo4j,Hadoop HBase, Couchbase,Mem ...
- 20165305 实验二:Java面向对象程序设计
2-1 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考http://www.cnblogs.com/rocedu/p/67 ...
- SQL中的 group by 1, order by 1 语句
看到group by 1,2 和 order by 1, 2.看不懂,google,搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” m ...
- hive的find_in_set函数
集合查找函数: find_in_set语法: find_in_set(string str, string strList) 返回值: int说明: 返回str在strlist第一次出现的位置,str ...
- maven项目没有src/test/java和src/test/resources目录问题解决
新建maven项目,如下图示: 只有src/main/java和src/main/resources两个目录,而没有src/test/java和src/test/resources,于是第一反应是没有 ...
- STM32 一个定时器产生4路 独立调频率,占中比可调,脉冲个数可以统计。
实现这个功能,基本原理是利用STM32 的输出比较功能. 1.其它设置就是普通定时器的设置这里开启,四个输出比较中断,和一个更新中断, 更新中断这里不需要开也可以达到目的,我这里开启是做其它的用处的. ...
- Linux基础命令---显示登录用户logname
logname 显示当前登录的用户名称.此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 logname 2 ...
- windows下cmd清屏命令cls
windows下cmd清屏命令cls