A--自动收小麦机--2023河南萌新联赛第(二)场:河南工业大学

A--自动收小麦机--2023河南萌新联赛第(二)场:河南工业大学_第1张图片

 链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

示例1

输入

4 1 2
1 1 4 5
2 2 2 3
4

输出

10

说明

在第4格放出水流后,水流会流向第3格,由于第3格高度比第4格低,所以水流继续向左流向第2格,因为平地水流只能流2格,所以到达第2格后水流停止,收获的小麦数量为1 + 4 + 5 = 10

示例2

输入

5 2 2
1 1 4 5 1
2 2 3 3 4
4
3

输出

9
6

解析:

        1e5每次遍历肯定超时,f 数组记录当前的位置最低能够流到的位置,输出前缀和差即可。

        f 数组的计算需要特别注意,此处需着重学习。

#include
using namespace std;
typedef long long ll;
const int N=1e5+5;
ll n,q,k,a[N],h[N],x,sum[N],f[N],l;
int main(){
	scanf("%lld%lld%lld",&n,&q,&k);
	for(int i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		sum[i]=sum[i-1]+a[i];	
	}
	for(int i=1;i<=n;i++){
		scanf("%lld",&h[i]);
		if(h[i]>h[i-1]) l=1,f[i]=1;
		else f[i]=l;
		l++;
		if(f[i]

你可能感兴趣的:(牛客,算法,c++,数据结构,前缀和)