本文主要是介绍CF1709B - Also Try Minecraft 题解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Also Try Minecraft
- CF1709B`Also Try Minecraft`题解
- 题目大意:
- 大致思路
- 偷偷贴个聊天贴
CF1709BAlso Try Minecraft
题解
还是原题:搁这呢
题目大意:
给定长度为n
的序列,a[i]
代表第i
位置的高度,从某个更高的位置走到更矮的位置会获得两者差值的下降伤害。m
次询问,询问从s
走到t
的下降伤害。(s
可能大于t
)
大致思路
前缀和:sum[i]
维护从1
走到i
的伤害. sum1[i]
维护从n
走i
的值。s<t
就是往前走,用sum[t]-sum[s]
,否则为sum1[t]-sum1[s]
贴个AC CODE:
int n,m;
long long a[N],sum1[N],sum[N];
void solve() {// 竞赛程序cin >> n >> m;for(int i = 1; i <= n; ++i) {cin >> a[i];if(i > 1) sum1[i] = sum1[i - 1] + max((long long)0, a[i - 1] - a[i]);}for(int i = n - 1; i >= 1; --i)sum[i] = sum[i+1] + max((long long)0, a[i + 1] - a[i]);while(m--) {int s, t;cin >> s >> t;if(s == t)cout << "0";else if(s > t)cout << sum[t] - sum[s] << endl;elsecout << sum1[t] - sum1[s] << endl;}
}
偷偷贴个聊天贴
这篇关于CF1709B - Also Try Minecraft 题解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!