Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
19600 桑迪 加强版密码锁 C++ 编译错误 0 0 MS 0 KB 738 2021-05-16 21:34:01

Tests(0/0):


#include<bits/stdc++.h> using namespace std; int a[1010],r[1010],dp1[110][110],dp[110][110],n,ans,tot,ma,i,j,k,ans=1<<30; 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; } } int check(int i,int j){ int mi=100; mi=min(mi,abs(a[i]-j)); mi=min(mi,abs(a[i]+100-j)); mi=min(mi,abs(j+100-a[i])); return mi*mi; } int main(){ init(); for(i=1;i<=n;++i){ for(j=0;j<=99;++j){ dp[i][j]=2000000; dp1[i][j]=check(i,j); } } for(j=0;j<=99;++j) dp[1][j]=dp1[1][j]; for(i=2;i<=n;++i) for(j=0;j<=99;++j) for(k=0;k<j;++k) dp[i][j]=min(dp[i][j],dp[i-1][k]+dp1[i][j]); for(j=0;j<=99;++j) ans=min(ans,dp[n][j]); cout<<ans; return 0; }


测评信息: