读入问题
查看原帖
读入问题
315205
Kniqht楼主2023/11/6 19:43

按照题目特殊方式读入,为什么错了啊?(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;
}
2023/11/6 19:43
加载中...