USACO 1.3-Ski Course Design
校赛的题啊,后悔没有早早做了!!!校赛啊!!!那么丰厚的奖品呢!!!唉~省赛加油吧!!!
/* ID: 15901291 TASK: skidesign LANG: C++ */ #include <iostream> #include <fstream> #include <algorithm> #include <math.h> /****************************************************************************************************************** 数据小,直接枚举长度为17的范围即可。 UPDATE: 枚举所有长度为17的间隔并求对应费用, 如1和18,即求把所有高度大于18的山变为18和小于1的山变为1的费用, 然后对所有间隔对应的费用求最小值 ******************************************************************************************************************/ using namespace std; int a[1050]; int main() { ifstream fin("skidesign.in"); ofstream fout("skidesign.out"); int T; while(fin>>T) { int price=1<<30,ans; for(int i = 0;i < T;i ++) fin>>a[i]; sort(a,a+T); for(int i = 0;i <= 83;i ++){ ans=0; //注意这里,每次需要将 ans 赋值为 0 for(int j = 0;j < T;j ++){ if(a[j] < i) ans+=pow(i-a[j],2); if(a[j] > i+17) ans+=pow(a[j]-17-i,2); } price=min(price,ans); } fout<<price<<endl; } return 0; }