社区讨论

10pts求条

P4105[HEOI2014] 南园满地堆轻絮参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhjacez2
此快照首次捕获于
2025/11/03 23:19
4 个月前
此快照最后确认于
2025/11/03 23:19
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=5e6+5;
int n,a1,a2,a3,a4,A1,mod; 
int a[N],b[N];
bool f[N];
bool check(int mid){
	for(int i=2;i<=n;i++){
		if(a[i-1]>a[i]){
			if(!f[i-1]){
				a[i-1]-=mid;
				f[i-1]=1;
			}
			if(a[i-1]>a[i]){
				if(!f[i]){
					a[i]+=mid;
					f[i]=1;
				}
			}
		}
		if(a[i-1]>a[i])return 0;
	}
	return 1;
}
signed main(){
	//freopen("a.in","r",stdin);
	//freopen("a.out","w",stdout);
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>a1>>a2>>a3>>a4>>A1>>mod;
	a[1]=A1;a[0]=0;
	b[0]=0,b[1]=a[1];
	for(int i=2;i<=n;i++){
		int x=(a[i-1]*a[i-1]*a[i-1]*a1)%mod+(a2*a[i-1]*a[i-1])%mod+(a3*a[i-1])%mod+a4;
		int y=(a[i-2]*a[i-2]*a[i-2]*a1)%mod+(a2*a[i-2]*a[i-2])%mod+(a3*a[i-2])%mod+a4;
		a[i]=(x%mod+y%mod)%mod;
		b[i]=a[i];
	}
	int l=0,r=1e18,ans=1e18;
	while(l<=r){
		for(int i=1;i<=n;i++)a[i]=b[i];
		memset(f,0,sizeof(f));
		int mid=(l+r)/2;
		if(check(mid)){
			ans=mid;
			r=mid-1;
//			cout<<0;
		}
		else l=mid+1;
	}
	cout<<ans;
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...