95pts求助WA on#20
查看原帖
95pts求助WA on#20
596945
nahidaa楼主2023/10/15 20:45
#include<bits/stdc++.h>
#define ll long long
#define _ 500005
using namespace std;
ll n,m,k,q[_],qianzhui[_],houzhui1[_],houzhui2[_],now,ans;
struct rec{
	int a,b,c;
}i[_];
int main()
{
//	freopen("reserve.in","r",stdin);
//	freopen("reserve.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int g=1;g<=n;++g){
		cin>>i[g].a;
	} 
	for(int g=1;g<=n;++g){
		cin>>i[g].b;
	} 
	for(int g=1;g<=n;++g){
		cin>>i[g].c;
	} 
	for(int g=1;g<=n;++g){
		i[g].a=min(i[g].a,i[g-1].a+i[g].b);
	}
	for(int g=n;g>=1;--g){
		houzhui1[g]=houzhui1[g+1]+i[g].b;
	} 
	cin>>m;
	for(int g=1;g<=m;++g){
		ans=2e9;
		cin>>k;
		for(int h=1;h<=k;++h){
			cin>>q[h];
		}
		q[k+1]=0;
		for(int h=1;h<=k;++h){
			qianzhui[q[h]]=qianzhui[q[h-1]]+i[q[h]].c;
		}
		for(int h=k;h>=1;--h){
			houzhui2[q[h]]=houzhui2[q[h+1]]+i[q[h]].b;
		}
		for(int h=1;h<=k;++h){
			ans=min(ans,i[q[h]-1].a+qianzhui[q[h-1]]+houzhui1[q[h]]-houzhui2[q[h]]);
		}
		cout<<min(i[n].a+qianzhui[q[k]],ans)<<"\n";
	}
	return 0;
}
/*

*/
2023/10/15 20:45
加载中...