题意解析

给定两个分为多段的数组ssvv,求v[i]s[i]v[i]-s[i]的最大值.

思路分析

运用循环构造两个数组,再按位比较

错点:变量名错误/(ㄒoㄒ)/~~

优化

运用一维差分减少时间复杂度

cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>s1>>nx;
		tx[s]+=nx;
		tx[s+s1]-=nx;
		s+=s1;
	}
	s=0;
	for(int i=1;i<=m;i++){
		cin>>s2>>nv;
		tv[s]+=nv;
		tv[s+s2]-=nv;
		s+=s2;
	}
	for(int i=1;i<=100;i++){
		x[i]=x[i-1]+tx[i-1];
		v[i]=v[i-1]+tv[i-1];
		maxx=max(maxx,v[i]-x[i]);
	} 
	cout<<maxx;

0 条评论

目前还没有评论...