Ski Course Design
2016-05-12 00:30
295 查看
http://train.usaco.org/usacoprob2?a=ekO1ud5KpT4&S=skidesign
题目大意:
已知N坐山的高度,调整(增加或减少)一座山的高度(x单位)花费x²元,调整山的高度使所有山之间的高度小于等于17,求最小花费
题目大意:
已知N坐山的高度,调整(增加或减少)一座山的高度(x单位)花费x²元,调整山的高度使所有山之间的高度小于等于17,求最小花费
#include <iostream> #include <fstream> //思路1:从最低的到最高的,枚举所有的方案,如最低的增加1,2...n。递归修改每座山的高度(每重递归修改一座山) //思路2:枚举所有可能的最低高度和最高高度 using namespace std; int n, a[1005], ans = 1 << 30; int price(int lowest, int highest) { int ans = 0; for(int i = 1; i <= n; i++) if(a[i] < lowest) ans = ans + (lowest - a[i])*(lowest - a[i]); else if(a[i] > highest) ans = ans + (a[i] - highest)*(a[i] - highest); return ans; } int main() { ifstream fin("skidesign.in"); ofstream fout("skidesign.out"); fin >> n; int minx = 1 << 30, maxx = -1, t; for(int i = 1; i <= n; i++) { fin >> a[i]; if(a[i] > maxx) maxx = a[i]; if(a[i] < minx) minx = a[i]; } for(int i = minx; i + 17 <= maxx; i++) { t = price(i, i + 17); if(ans > t) ans = t; } fout << (ans == 1 << 30 ? 0 : ans) << endl; fout.close(); return 0; }总结:注意选择合适的枚举策略
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C#编程中枚举类型的使用教程
- 枚举的用法详细总结
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例