求问题所在
查看原帖
求问题所在
1081318
WoXitao楼主2023/10/16 13:36
#include <iostream>
using namespace std;
int main() {
    long long n;
    cin >> n;
    long long a[1145141], b[1145141], c[1145141];
    a[0]=0;
    b[0]=0;
    c[0]=0;
    for (long long i = 1; i <= n; i++) cin >> a[i];
    for (long long i = 1; i <= n; i++) cin >> b[i];
    for (long long i = 1; i <= n; i++) cin >> c[i];
    long long q;
    cin >> q;
    for(long long i=0;i<q;i++){
    	long long m; 
        cin>>m;
        long long p[1145141];
        for(long long j=1;j<=m;j++){
            cin>>p[j];
        }
        long long dp1[1145141919],dp2[1145141919];
        dp1[0]=0;
        dp2[n+1]=0;
        long long jj=1;
        for(long long j=1;j<=n;j++){
        	dp1[j]=dp1[j-1]-a[j-1]+a[j];
        	if(p[jj]==j){
        		jj++;
        		dp1[j]=dp1[j]+c[j];
			}
			
		}
		long long pp=m;
		for(long long j=n;j>=1;j--){
        	if(p[pp]==j){
        		pp--;
        		dp2[j]=dp2[j+1];
			}else{
				dp2[j]=dp2[j+1]+b[j];
			}
		}
		long long mina=1145141919810;
		for(long long j=0;j<=n;j++){
        	mina=min(mina,dp1[j]+dp2[j+1]);
    	}
    	cout<<mina<<endl;
    }
    return 0;
}
2023/10/16 13:36
加载中...