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

题面

分析

这道题其实是差分模板qvq 区间修改 单点查询

而且题面也疯狂暗示,相邻两点海拔差,用差分简直是按照出题人意思来的,而且人性化的是n+1个点刚好n个区间,查询也只用查询第n点。

同时,知道海拔差的情况下是可以算出温度的,所以本质上这个差分数组合理也是因为可以通过前缀和倒推出温度。

所以对于每个修改,其实只有一头一尾两个点受了影响,即l-1和l的高度差影响温度和r和r+1的高度差影响温度,中间相对高度是不变的,不影响温度。

就修改这两个点就OK了.因为查询的是第n个点,其实答案可以一直累着走,修改区间的同时更新答案

代码

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define N 200020
  4. #define ll long long
  5. ll n,q,s,t,x,l,r,v,ans,last;
  6. ll c[N];
  7. template<class T>
  8. inline void read(T &x)
  9. {
  10. x=0;ll f=1;static char c=getchar();
  11. while(c<‘0‘||c>‘9‘) {if(c==‘-‘)f=-1;c=getchar();}
  12. while(c>=‘0‘&&c<=‘9‘){x=x*10+c-‘0‘,c=getchar();}
  13. x*=f;
  14. }
  15. inline ll cal(ll x){return x>0?-(x*s):-(x*t);}
  16. int main()
  17. {
  18. read(n);read(q);read(s);read(t);
  19. for(ll i=0;i<=n;i++)
  20. {
  21. read(x);
  22. c[i]=x-last;
  23. last=x;ans+=cal(c[i]);
  24. }
  25. for(ll i=1;i<=q;i++)
  26. {
  27. read(l),read(r),read(v);
  28. ans-=cal(c[l]),c[l]+=v,ans+=cal(c[l]);
  29. if(r<n)ans-=cal(c[r+1]),c[r+1]-=v,ans+=cal(c[r+1]);
  30. printf("%lld\n",ans);
  31. }
  32. return 0;
  33. }

原文地址:https://www.cnblogs.com/NSD-email0820/p/9852310.html

时间: 2024-08-30 18:25:14

【AtCoder2442】フェーン現象 (Foehn Phenomena)的相关文章

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

https://www.luogu.org/problemnew/show/AT2442 1 #include <bits/stdc++.h> 2 #define read read() 3 #define up(i,l,r) for(register int i = (l);i <= (r);i++) 4 #define down(i,l,r) for(register int i = (l);i >= (r);i--) 5 #define traversal_vedge(i)

Citrix Provisioning Services LAB時出現Unable to contact th database Server

今天在執行PVS LAB時出現下圖 後來發現為SQL連入的要調整如下圖1.Machine Account2.對應DB3.DB權限 如果是用SA帳戶作為本機的SQL,就是調這組帳戶 調完後對應就可以使用PVS 感謝

在FineReport報表軟體中實現分發逐級上報

什麼是分發逐級上報 分發逐級上報是指任務流程是先從上級到下級,然後下級再逐級上報回上級,即上級部門將任務下發下來,下級部門收到任務之後,逐級上報,直至回到下發任務的上級部門,然後再繼續原來的任務. 比如說公司領導想要查看本月的銷售情況,而現在資料庫中暫時還沒有銷售數據的存在,那麼就可以創建一個銷售數據上報的流程,讓各個銷售員將銷售數據上報上來,如果公司銷售人員不多,那麼就可以使用聯合填報上報,直接為每個銷售人員綁定上報任務,但是當公司人員很多的時候,大家並不知道每個銷售人員的具體情況,那麼此時就

css 實現微信聊天類似的氣泡

要實現這樣的效果 代碼如下: --------------------------------------- <style> .test{width:300px; padding:30px 20px; margin-left:60px; margin-top:100px; background:#beceeb; position:relative;} .test span{width:0; height:0; font-size:0; overflow:hidden; position:abs

Marquee實現滾動公告

<marquee scrollamount="3" direction="up"> --內容 </marquee> 今天自己第一次要實現類似滾動公告的東西,記一下問題點 1.在運行時發現IE瀏覽器無法現行,但是Google卻能顯示:解決的辦法是設置IE瀏覽器,在進階設置中將'多媒體'選項的勾都打上就OK了

大型物件列印之翹曲現象與加熱板作用論述

大型物件列印之翹曲現象與加熱板作用論述 原文出處:http://goo.gl/088nW 這篇文章的許多論點主要是延續原作者的前一篇"warping fundamentals"去思考.特別是,去思考列印的速度.列印物件的尺寸.以及塑料的種類,這些都會是造成物件捲曲的因素.還有一些顯而易見的論點提到,為何加熱板的使用會減少捲曲的現象. More of the same ‘out loud’ thinking on the issue of warping in this post to follo

生物醫學大數據:現狀與展望

大數據 (big data) 是指由於容量太大和過於複雜,無法在一定時間內用常規軟體對其內容進行抓取.管理.存儲.檢索.共享.傳輸和分析的數據集. 大數據具有「4V」特徵:①數據容量 (Volume) 大,常常在 PB(1 PB=250 B)級以上:②數據種類 (Variety) 多,常常具有不同的數據類型(結構化.半結構化和非結構化)和數據來源:③產生和更新速度 (Velocity) 快(如實時數據流),時效性要求高:④科學價值 (Value) 大,儘管利用密度低,卻常常蘊藏著新知識或具有重要

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

引言 生產者消費者是一個經典的模式 利用生產者,消費者和緩衝區降低了生產者和消費者之間的的耦合度 便於對生產者和消費者的修改 下面記錄的是一個經典的單一生產者多消費者的模式 設計思路 以隊列做為緩衝區,實現產品的FIFO 生產者調用緩衝區的push函數,將產品加入緩衝區 消費者調用緩衝區的pop函數,將產品從緩衝區取出 因為生產者與消費者分屬於不同的線程,所以要設置鎖 類的聲明 class CacheQueue { private: /** * @brief 緩衝隊列 */ queue<int>

那些年我們未實現的夢

昨天晚飯之後和大學同學在西門町紅樓後面的酒吧聊了很多,聊了過去,現在,當然也不斷地在弄清我們的未來. “清華北大” 這是我的第一個夢想吧,可能大多數中國的學生的夢想,但是能去的人才有幾個呢.特別是在小城市,每年也就三四個考上清華和北大的.大我兩歲的表哥還是我們市歷史上第一個報送到清華的學生,而下一個這麼多年過去也一直沒有.我不算是很努力的學生,但是覺得自己有點小聰明,也沒有像別人題海戰術,基本上就是把老師上課的內容搞明白,時常溫故而知新.從高一開始的年級400多名,經過一年努力,逐步穩定在二十名