skidesign-section1.3
来源:互联网 发布:小蜜蜂软件怎么使用 编辑:程序博客网 时间:2024/06/06 17:40
题目大意
农民约翰的农场里有N座山峰(1<=N<=1000),每座山都有一个在0到100之间的整数的海拔高度。因为在冬天山上有丰富的积雪,所以约翰经常开办滑雪训练营。 不幸的是,约翰刚刚得知税法在滑雪训练营方面有新变化,明年开始实施。在仔细阅读法律后,他发现如果滑雪训练营的最高和最低的山峰海拔高度差大于17就要收税。因此,如果他改变山峰的高度(使最高与最低的山峰海拔高度差不超过17),就可以避免支付税收。 如果改变一座山x单位的高度成本是x^2单位,约翰最少需要付多少钱?约翰只愿意改变整数单位的高度。
输入格式
line 1:一个整数nline 2-N+1:每行是一座山的海拔高度
输出格式
一个数字,表示约翰需要支付修改山海拔高度的总金额,最高和最低的山峰间高度差最多17。
样例输入
520412421
样例输出
18
题解
题目抽象出来就是把0-100的数字放到一个区间长度为17的区间中,并且要求所付出代价最小,易知代价随路径长度增大而增大,条件范围内便利所有可能的区间,每种区间算出对应的代价,比较即可得出所求
代码
#include<stdio.h>int f(int i){if(i>0){ if(i>17) return i-17; else return 0;}if(i<0) return -i;return 0;}int main(){int n=0,a[1010]={0},b[1010]={0},i=0,j=0,temp=0,p=0;long int s[1000]={0},min=0;scanf("%d",&n);for(i=0;i<n;i++){ scanf("%d",&a[i]);}for(i=0;i<n;i++) for(j=0;j<n-i-1;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } }p=a[n-1]-a[0]-17;if(p<=0){ printf("0\n"); return 0;}for(i=0;i<=p;i++){ s[i]=0; for(j=0;j<n;j++) { b[j]=f(a[j]-a[0]-i); } for(j=0;j<n;j++) s[i]=s[i]+b[j]*b[j];}min=s[0];for(i=0;i<=p;i++) if(min>s[i]) min=s[i];printf("%ld\n",min);return 0;}
阅读全文
0 0
- skidesign-section1.3
- USACO1.3:skidesign
- USACO-Section1.3 Wormholes
- USACO-Section1.3 Wormholes
- milk-section1.3
- barn1-section1.3
- crypt1-section1.3
- combo-section1.3
- wormhole-section1.3
- USACO skidesign
- USACO skidesign
- usaco skidesign
- USCAO section1.3 Barn Repair
- USACO Section1.3 混合牛奶
- USACO section1.3 Mixing Milk
- usaco.section1.3 wormhole(枚举)
- USACO-Section1.3Wormholes[其他]
- USACO Section1.3 Mixing Milk
- 解决Ubuntu下pycharm无法输入中文的问题
- 2017之最佳js实现页面跳转的方式
- 【逻辑思考】选择真的比努力重要?
- Openssl-1.1.0f在VS工程中的配置
- 对排序问题的总结
- skidesign-section1.3
- 操作系统学习笔记(八)
- vue踩坑不完全指北(1)
- 新手如何利用工具做出一个好看的Web静态页面
- Eclipse中查看JDK类库的源代码和API文档(转)
- Makefile的一个具体的实例
- 运行VINS-Mono遇到的问题
- python 直接运行python文件编写好的代码
- iOS学习笔记-071.CALayer01——基础