精选文章 焚风现象

焚风现象

作者:baibu2262 时间: 2021-02-07 01:33:32
baibu2262 2021-02-07 01:33:32
【摘要】题目描述   题目译自 JOI 2017 Final T1「フェーン現象 / Foehn Phenomena」  焚风是是由于空气作绝热下沉运动时,因温度升高湿度降低而形成的一种干热风。焚风常出现在山脉背风坡,由山地引发的过山气流在背风坡下沉,使过山气流变得干热的一种风。在高压区,空气下沉也可产生焚风。  IOI 王国永远刮着海风。风从地点 000 依次吹到地点 111,地点 222 ……直...

题目描述

题目译自 JOI 2017 Final T1「フェーン現象 / Foehn Phenomena

焚风是是由于空气作绝热下沉运动时,因温度升高湿度降低而形成的一种干热风。焚风常出现在山脉背风坡,由山地引发的过山气流在背风坡下沉,使过山气流变得干热的一种风。在高压区,空气下沉也可产生焚风。

IOI 王国永远刮着海风。风从地点 000 依次吹到地点 111,地点 222 ……直到地点 NNN,共 N+1N+1N+1 个地点。JOI 君住在地点 NNN。地点 000 的海拔 A0=0A_0=0A0​​=0,地点 i(1⩽i⩽N)i(1\leqslant i\leqslant N)i(1iN) 的海拔为 AiA_iAi​​。
地表风的温度随海拔升降而变化。地点 000 在海边,温度为 000 度;对于任一地点 i(0⩽ii(0i<N),从地点 iii 吹到地点 i+1i+1i+1 的风的温差仅取决于两地的海拔差。具体来说:

  • 如果 Ai=Ai+1A_i=A_{i+1}Ai​​=Ai+1​​,风的温度不变;
  • 如果 AiAi​​<Ai+1​​,风每爬升 111 米,温度就会下降 SSS 度;
  • 如果 Ai>Ai+1A_i> A_{i+1}Ai​​>Ai+1​​,风每下沉 111 米,温度就会升高 TTT 度。

IOI 国的地壳运动很强烈。你得到了 QQQ 天来地壳运动的数据。在第 jjj 日 (1⩽j⩽Q)(1\leqslant j\leqslant Q)(1jQ),地点 Lj,Lj+1,…,Rj(1⩽Lj⩽Rj⩽N)L_j, L_j+1, \ldots, R_j (1\leqslant L_j\leqslant R_j\leqslant N)Lj​​,Lj​​+1,,Rj​​(1Lj​​Rj​​N) 的海拔升高了 XjX_jXj​​,注意 XjX_jXj​​ 可能是负数。
你的任务是,计算每天地壳运动后 JOI 君住所的温度。

输入格式

第一行有四个整数 N,Q,S,TN, Q, S, TN,Q,S,T,用空格分隔。
在接下来的 N+1N+1N+1 行中,第 iii 行 (1⩽i⩽N+1)(1\leqslant i\leqslant N+1)(1iN+1) 有一个整数 Ai−1A_{i-1}Ai1​​。
在接下来的 QQQ 行中,第 jjj 行 (1⩽j⩽Q)(1\leqslant j\leqslant Q)(1jQ) 有三个整数 Lj,Rj,XjL_j, R_j, X_jLj​​,Rj​​,Xj​​,用空格分隔。
输入的所有数的含义见题目描述。

输出格式

共 QQQ 行,第 jjj 行 (1⩽j⩽Q)(1\leqslant j\leqslant Q)(1jQ) 有一个整数,表示第 jjj 日地壳运动后 JOI 君住所的温度。

样例

样例输入 1

3 5 1 2
0
4
1
8
1 2 2
1 1 -2
2 3 5
1 2 -1
1 3 5

样例输出 1

-5
-7
-13
-13
-18

样例解释 1

最初,地点 0,1,2,30,1,2,30,1,2,3 的海拔分别是 0,4,1,80,4,1,80,4,1,8。第一天地壳运动后,海拔分别为 0,6,3,80,6,3,80,6,3,8。 此时,风的温度分别为 0,−6,0,−50,-6,0,-50,6,0,5。


这道题是考试的T3,也是最后一道了(写完要歇会儿)

 

乍一眼看上去是个线段树的板子,我考场上也就是这么写的,然后就挂了,话说这场普及难度的考试我竟然只拿了33分 (羞涩)
线段树会卡常,惨的一批
考完后读了一边题,觉得有点不对,又读了一遍,发现是个思维题,O(1)就能跑
因为居住点是固定的,而 温度只与高度的差值有关 
还有一个要注意的点就是维护的时候因为要做到O(1),所以要维护高度差,操作上本身没有难度
下面给出代码:
#include
#include
#include
#include
#include
#include
#include<string>
using namespace std;
inline long long rd(){ long long x=0,f=1; char ch=getchar(); for(;!isdigit(ch);ch=getchar()) if(ch=='-') f=-1; for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0'; return x*f;
}
inline void write(long long x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0'); return ;
}
long long a[1000006];
long long s[1000006];
long long T,S;
long long check(long long x){ if(x>0) return x*(0-S); if(x<0) return 0-(x*T); return 0;
}
int main(){ long long n=rd(),m=rd(); S=rd(); T=rd(); long long ans=0; for(long long i=0;i<=n;i++){ a[i]=rd(); if(i>0) s[i]=a[i]-a[i-1]; ans+=check(s[i]); } while(m--){ long long x=rd(),y=rd(),z=rd(); s[x]+=z; ans+=(check(s[x])-check(s[x]-z)); if(y<n){ s[y+1]-=z; ans+=(check(s[y+1])-check(s[y+1]+z)); } write(ans); printf("\n"); } return 0;
}

考完后发现我还有不足(实在是太菜了)

很多会的题没有写出来

或许这是一次模考,但是却反映出了很多问题

离考试还有一段时间,要加油了。

转载于:https://www.cnblogs.com/WWHHTT/p/9677636.html

分享文章到微博
分享文章到朋友圈

上一篇:多维前缀和

下一篇:Book Lending Registration

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。
焚风现象介绍:华为云为您免费提供焚风现象在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多焚风现象的相关内容。| 移动地址: 焚风现象 | 写博客