按照题目特殊方式读入,为什么错了啊?(type=1
(这是部分分代码
#include<bits/stdc++.h>
#define int long long
#define ll long long
using namespace std;
const int N=5010;
const int P=1ll<<30;
int n,typ;
int a[N],b[N],sum[N];
int f[N],last[N];
signed main(){
scanf("%lld%lld",&n,&typ);
if(!typ){
for(int i=1;i<=n;i++) scanf("%lld",&a[i]),sum[i]=sum[i-1]+a[i];
}
else{
int x,y,z,m,p,l,r,last=0;
scanf("%lld%lld%lld%lld%lld%lld",&x,&y,&z,&b[1],&b[2],&m);
for(int i=3;i<=n;i++) b[i]=(x*b[i-1]%P+y*b[i-2]%P+z%P)%P;
while(m--){
scanf("%lld%lld%lld",&p,&l,&r);
for(int i=last+1;i<=p;i++) a[i]=(b[i]%(r-l+1))+l,sum[i]=sum[i-1]+a[i];
last=p;
}
}
for(int i=1;i<=n;i++){
f[i]=1e17;
for(int j=0;j<i;j++)
if(last[j]<=sum[i]-sum[j]&&f[j]+(sum[i]-sum[j])*(sum[i]-sum[j])<=f[i])
f[i]=f[j]+(sum[i]-sum[j])*(sum[i]-sum[j]),last[i]=sum[i]-sum[j];
}
printf("%lld",f[n]);
return 0;
}