AcWing 4380. 合并石子(贪心+前缀和+双指针)

#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
ll pre_sum1[100010],pre_sum2[100010];
int l1=1,r1=1,l2=1,r2=1;

int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		int t;
		cin>>t;
		pre_sum1[i]=pre_sum1[i-1]+t;
	}
	for(int i=1;i<=m;i++){
		int t;
		cin>>t;
		pre_sum2[i]=pre_sum2[i-1]+t;
	}
	int res=0;
	for(;r1<=n&&r2<=m;){
		while(r1<=n&&r2<=m&&pre_sum1[r1]-pre_sum1[l1-1]!=pre_sum2[r2]-pre_sum2[l2-1]){
			if(pre_sum1[r1]-pre_sum1[l1-1]>pre_sum2[r2]-pre_sum2[l2-1]){
				r2++;
			}
			else{
				r1++;
			}
		}
		res++;
		r1++;
		l1=r1;
		r2++;
		l2=r2;
	}
	cout<<res;
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值