您的位置:首页 > 其它

USACO Ski Course Design 暴力

2015-01-27 20:45 381 查看
从Min到Max范围内暴力一下即可。

/*
ID: wushuai2
PROG: skidesign
LANG: C++
*/
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <cstring>
#include <cmath>
#include <stack>
#include <string>
#include <map>
#include <set>
#include <list>
#include <queue>
#include <vector>
#include <algorithm>
#define Max(a,b) (((a) > (b)) ? (a) : (b))
#define Min(a,b) (((a) < (b)) ? (a) : (b))
#define Abs(x) (((x) > 0) ? (x) : (-(x)))
#define MOD 1000000007
#define pi acos(-1.0)

using namespace std;

typedef long long           ll      ;
typedef unsigned long long  ull     ;
typedef unsigned int        uint    ;
typedef unsigned char       uchar   ;

template<class T> inline void checkmin(T &a,T b){if(a>b) a=b;}
template<class T> inline void checkmax(T &a,T b){if(a<b) a=b;}

const double eps = 1e-7      ;
const int M = 200000         ;
const ll P = 10000000097ll   ;
const int INF = 0x3f3f3f3f   ;
const int MAX_N = 20         ;

int a[1011];

int main() {
ofstream fout ("skidesign.out");
ifstream fin ("skidesign.in");
int i, j, k, t, n, m, s, c, w, q;
fin >> n;
int Min = INF, Max = -INF;
int ans = INF;
for(i = 0; i < n; ++i){
fin >> a[i];
checkmax(Max, a[i]);
checkmin(Min, a[i]);

}
for(int low = Min; low < Max; ++low){
for(int high = low + 1; high <= Max; ++high){
if(Abs(high - low) <= 17){
int cur = 0;
for(i = 0; i < n; ++i){
if(a[i] < low){
cur += (low - a[i]) * (low - a[i]);
} else if(a[i] > high){
cur += (a[i] - high) * (a[i] - high);
}
}
checkmin(ans, cur);
}
}
}
fout << ans << endl;
fin.close();
fout.close();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: