一个奇怪的扣分
查看原帖
一个奇怪的扣分
409518
Zzz_yigui楼主2023/10/16 18:50

该程序末尾输出如果使用printf 最后一组数据会wa,但是cout不会

#include<bits/stdc++.h>
using namespace std;
long long int n,a[500005],b[500005],c[500005],p[500005],q,m,a0,a1,t,tt,s1,sb[500005]; //0表示前s个可以被覆盖,1表示不可以(任意时刻0可以转换为1反之不行) 
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);//cin>>a[i];
	for(int i=1;i<=n;i++)scanf("%d",&b[i]);//cin>>b[i];
	for(int i=1;i<=n;i++)scanf("%d",&c[i]);//cin>>c[i];
	for(int i=1;i<=n;i++){
		a[i]=min(a[i-1]+b[i],a[i]);
		sb[i]=sb[i-1]+b[i];
	}
	cin>>q;
	while(q--){
		scanf("%d",&m);//cin>>m;
		a0=0;a1=0;s1=0;
		for(int i=1;i<=m;i++){
			scanf("%d",&p[i]);//cin>>p[i];
		}
		for(int i=1;i<=m;i++){
			a1=min(a[p[i]-1]+s1,a1+(sb[p[i]-1]-sb[p[i-1]]));
			s1+=c[p[i]];
		}
		a0=a[n]+s1;
		a1=a1+(sb[n]-sb[p[m]]);
		cout<<min(a1,a0)<<endl;
		//printf("%d\n",min(a1,a0));
	}
	return 0;
}
2023/10/16 18:50
加载中...