Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
19388 孙浩楠 房屋积水 C++ 编译错误 0 0 MS 0 KB 1075 2021-05-15 17:14:06

Tests(0/0):


#include<bits/stdc++.h> using namespace std; int a[1010],r[1010]; int n,ans,tot; void init() { cin>>n>>r[1]; for(int i=1;i<=n;++i){ a[i]=r[i]%10; r[i+1]=(r[i]*6807+2831)%201701; } } int check(int x) { int max1=0,max2=0,minn; for(int i=1;i<=x-1;++i) max1=max(max1,a[i]); for(int i=x+1;i<=n;++i) max2=max(max2,a[i]); minn=min(max1,max2); if(minn>a[x])return minn-a[x]; else return 0; } int main() { init(); for(int i=2;i<=n-1;++i){ ans+=check(i); } cout<<ans; return 0; } 方法三:O(n) #include<bits/stdc++.h> using namespace std; int a[1010],r[1010],dp[110][110]; int n,ans,tot,ma; void init() { cin>>n>>r[1]; for(int i=1;i<=n;++i){ a[i]=r[i]%10; r[i+1]=(r[i]*6807+2831)%201701; } } void pre() { ma=a[1]; for(int i=2;i<=n;++i){ le[i]=ma; ma=max(ma,a[i]); } ma=a[n]; for(int i=n-1;i>=1;--i){ ri[i]=ma; ma=max(ma,a[i]); } } int main() { init(); pre(); for(int i=2;i<=n-1;++i){ ma=min(le[i],ri[i]); if(ma>a[i])ans+=(ma-a[i]); } cout<<ans; return 0; }


测评信息: