贪心
滑雪场设计
题目描述:
思路:其实贪心是不行的,让最低和最高的改成相差17的山峰之后,最高最低可能就改变了,不是最有答案。观察数据比较小,可以枚举,让每一坐山峰都符合17的差值;
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; #define sc(n) scanf("%d",&n) #define print(n) printf("%d\n",n) #define endl "\n"; #define ios ios::sync_with_stdio(false);cin.tie(0); cout.tie(0) const int N=1000010; const int MOD = 1e9 + 7; const int INF=1e9; const double eps=1e-5; int n,m; int a[N],b[N]; int poww(int x){ return x*x; } int main(){ sc(n); for(int i=0;i<n;i++) cin>>a[i]; int ans=1e9; for(int i=1;i<84;i++){ int t=0,l=i,r=i+17; for(int j=0;j<n;j++){ if(a[j]<l) t+=poww(a[j]-l);// 枚举处理每座山峰的情况,让每座山峰都满足差值小于等于17的情况 else if(a[j]>r) t+=poww(a[j]-r); } ans=min(ans,t);//取最小的答案 } cout<<ans<<endl; }