题目地址

原题地址

题解

其实就是一个区间加,单点查询的问题
当然可以线段树/树状数组做,但是这两个做法要分类讨论所以代码会比较多
我们考虑一种更简便的做法
差分!
因为温度只和海拔差有关,这相当于题目赤裸裸的告诉我们要差分
那么我们考虑每次修改海拔对答案的影响
对于中间那一段,显然对答案的贡献是不会变的
会变的只有\(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;
}

转载于:https://www.cnblogs.com/henry-1202/p/10146836.html

AT2442 フェーン現象 (Foehn Phenomena)相关推荐

  1. 洛谷 AT2442 フェーン現象 (Foehn Phenomena)

    洛谷 AT2442 フェーン現象 (Foehn Phenomena) 题目链接 题意: 自己看 思路: 当前地点温度其实只和前一个地点有关,可以考虑差分,每次变动时先减去原地点产生的影响,在加上变动后 ...

  2. [AT2442]フェーン現象 (Foehn Phenomena)

    题目大意:一个数组$A$和$P$,若$A_i>A_{i+1}$,$P_{i+1}=P_i+(A_i-A_{i+1})\times S$,否则$P_{i+1}=P_i-(A_{i+1}-A_i)\ ...

  3. 【洛谷AT2442】フェーン現象(Foehn Phenomena)【线段树】

    linklinklink 分析: 都说是裸差分 那就线段树做( 海拔的上升与下降 就区间修改 答案就单点查询 具体的就跟题意模拟了 然后注意a0a_0a0​是000 那n,x,yn,x,yn,x,y啥 ...

  4. 【AtCoder2442】フェーン現象 (Foehn Phenomena)

    题面 分析 这道题其实是差分模板qvq 区间修改 单点查询 而且题面也疯狂暗示,相邻两点海拔差,用差分简直是按照出题人意思来的,而且人性化的是n+1个点刚好n个区间,查询也只用查询第n点. 同时,知道 ...

  5. フェーン現象 (Foehn Phenomena)

    题意翻译 题目简述 你知道N+1N+1个地点的海拔A_iAi​,编号为0 \dots N0-N,有风从00吹向NN,想让你求出地点NN的风的温度. 保证A_0=0A0​=0 规则: 如果A_i=A_{ ...

  6. Foehn Phenomena

    题目链接 解题思路:利用差分数组,此时得到每两个元素的差值,从首位置加到当前节点可以得到当前节点对应的元素.差分数组可以高效的改变区间值.当同时给[ l, r] 的元素 加x 时, 只需将差分数组 l ...

  7. 2019.2-2019.3 TO-DO LIST

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

  8. 一些根本不用数据结构的题。。(积木大赛、焚风现象)

    我发现我学数据结构学傻啦..看题和数据范围就会想到些数据结构... 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为n的大厦,大厦可以看成由n块宽度为1的积木 ...

  9. 纯php实现定时器任务,純PHP實現定時器任務(Timer)

    定時器任務,在WEB應用比較常見,如何使用PHP實現定時器任務,大致有兩種方案:1)使用Crontab命令,寫一個shell腳本,在腳本中調用PHP文件,然后定期執行該腳本:2)配合使用ignore_ ...

最新文章

  1. 千万级并发下的 推送系统建设策略解析(一)
  2. Android快速发布项目到jcenter详解
  3. spark集群测试小案例
  4. android studio编译找不到程序包,【图片】哥哥们,android studio 打包的安装包手机无法识别怎么破【androidstudio吧】_百度贴吧...
  5. linux c语言 信号,linux下基于C语言的信号编程实例
  6. 微基准测试 r_在您的构建过程中添加微基准测试
  7. linux bluez语音传输,Linux BlueZ PCM 音频播放器
  8. 合同电子档备份-NXCRM客户管理系统v2.2.5
  9. 常用的MySQL命令大全
  10. 怎么给php下拉框默认选中
  11. MAC 上的 PostMan 汉化
  12. php主机卫士,Bypass360主机卫士SQL注入防御八种姿势
  13. 项目Kick Off 我们应该做什么?
  14. pt-online-schema-change 脚本化
  15. ffmpeg合并mp4脚本
  16. SkeyeLive同屏直播库库功能介绍和接口说明与调用
  17. 这有几个常见的电脑故障解决方法,需要的朋友快来
  18. 用python画皮卡丘代码-用python画一只可爱的皮卡丘
  19. 【css】巧用border制作三角形
  20. 本地自签https证书

热门文章

  1. 超级计算机榜单说明:TOP500、Green500、Graph500、IO500
  2. Java多线程爬取豆瓣排行榜Top250(maven)
  3. Linux和Windows误删文件恢复办法
  4. 长安汽车董事长下场宣传原力技术 全擎引领电动化出行普及时代
  5. 第二章 51单片机硬件结构
  6. fitbit同步不了怎么解决_Fitbit 智能设备没有与安卓设备的 Fitbit 应用程序同步怎么办?...
  7. java安全管理器SecurityManager入门
  8. 金仓数据库KingbaseES运维工具参考手册(5. 辅助运维工具)
  9. 玩转STM32F0 Value Line Discovery 之 认识板载资源
  10. STM32精英,战舰版 蜂鸣器播放菊次郎的夏天