求助今晚ABC的E
  • 板块学术版
  • 楼主GSRgsrgsr
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/3/19 21:48
  • 上次更新2023/10/23 21:03:40
查看原帖
求助今晚ABC的E
550579
GSRgsrgsr楼主2023/3/19 21:48
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+5;
struct node{
	int ll,rr,w;
}cnt1[N],cnt2[N];
signed main(){
	int L,n1,n2,l=1,r=1,p,q,ans=0;
	scanf("%lld%lld%lld",&L,&n1,&n2);
	for(int i=1;i<=n1;++i){
		scanf("%lld%lld",&p,&q);
		if(i==1)cnt1[i].ll=1;
		else cnt1[i].ll=cnt1[i-1].rr+1;
		cnt1[i].rr=cnt1[i].ll+q-1;
		cnt1[i].w=p;
	}
	for(int i=1;i<=n2;++i){
		scanf("%lld%lld",&p,&q);
		if(i==1)cnt2[i].ll=1;
		else cnt2[i].ll=cnt2[i-1].rr+1;
		cnt2[i].rr=cnt2[i].ll+q-1;
		cnt2[i].w=p;
	}
//	for(int i=1;i<=n1;++i)printf("%lld %lld %lld\n",cnt1[i].ll,cnt1[i].rr,cnt1[i].w);
//	for(int i=1;i<=n2;++i)printf("%lld %lld %lld\n",cnt2[i].ll,cnt2[i].rr,cnt2[i].w);
	while(l<=n1&&r<=n2){
		bool bj=false;
		node x=cnt1[l],y=cnt2[r];
		if(x.ll>y.ll||(x.ll==y.ll&&x.rr>y.rr)){
			swap(x,y);
			bj=true;
		}
		if(x.rr>=y.ll&&x.w==y.w){
			if(x.rr<=y.rr)ans+=x.rr-y.ll+1;
			else ans+=y.rr-y.ll+1;
			if(!bj)r++;
			else l++;
		}
		else{
			if(!bj)l++;
			else r++;
		}
	}
	printf("%lld",ans);
	return 0;
}

rt,AC20,WA16

2023/3/19 21:48
加载中...