Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
18982 王循 加强版密码锁 C++ 通过 100 0 MS 348 KB 699 2021-05-03 14:26:10

Tests(10/10):


#include <bits/stdc++.h> using namespace std; long long n,a[105],r[105]; long long ans=INT_MAX; long long f[105][105]; long long c(int x,int y) { return pow(min(abs(a[x]-y),min(100+y-a[x],100+a[x]-y)),2); } void init() { cin>>n>>r[1]; for(int i=1; i<=n; ++i) { a[i]=r[i]%100; r[i+1]=(r[i]*6807+2831)%201701; //cout<<a[i]<<' '; } //cout<<endl; } int main() { init(); memset(f,-INT_MAX,sizeof(f)); for(int i=0; i<=99; i++)f[1][i]=c(1,i); for(int i=2; i<=n; i++) for(int j=i-1; j<=99-(n-i); j++) for(int k=i-2; k<=j-1; k++) f[i][j]=min(f[i][j],f[i-1][k]+c(i,j)); for(int i=n-1; i<=99; i++)ans=min(ans,f[n][i]); cout<<ans<<endl; return 0; }


测评信息: