hdu 2111 Saving HDU
2016-07-27 18:02
465 查看
解题思路:
首先做本题,要清楚题意的要求。
1.读取数据到结构体数组中,然后按其价值降序(价值最大的放在最上面)。
2.比较给定的M (包裹容量),如果大于当前宝物的体积,则计算总价值+= 宝物的总价值( 体积*价值),然后将当前总容量=总容量 - 已消耗宝物的体积
3.如果当前剩余容量,不大于宝物体积,则【假设宝贝可以分割,分割后的价值和对应的体积成正比】,总价值+=m*当前宝物的价值。
4. 输出总价值
AC 代码:
#include<stdio.h> #include<stdlib.h> typedef struct { int val,v; } B; int cmp(const void *a,const void *b) { B *a1=(B *)a; B *b1=(B *)b; return b1->val - a1->val; } int main(void) { int i,m,n,sum; B b[110]; while(scanf("%d",&m)!=EOF,m) { scanf("%d",&n); sum=0; for(i=0; i<n; i++) scanf("%d%d",&b[i].val,&b[i].v); qsort(b,n,sizeof(b[0]),cmp); for(i=0; i<n; i++) { if(m>b[i].v) { sum+=b[i].v*b[i].val; m-=b[i].v; } else { sum+=m*b[i].val; break; } } printf("%d\n",sum); } return 0; }
相关文章推荐
- requirejs:模块加载(require)及定义(define)时的路径小结
- oracle服务占用8080端口
- poj 3295 Tautology(构造法)
- RaidoButton单选框
- build.gradle 多渠道打包和用正式签名运行调试
- Storm1.0集群部署
- Gradle常用命令操作及配置说明
- Linux 下IO端口编程访问
- 三、腾讯统计和bugly追踪集成
- LinkList 单链表的实现
- Java高级-线程同步lock与unlock使用
- JQuery 网页选项卡制作
- JQuery 网页选项卡制作
- wps for linux 不能正常使用中文输入法
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- Java的4种单例模式
- 对程序员来说,提高薪水最好的建议是什么?
- UVALive 3635 Pie (二分)
- Swift 流程控制
- ssh第一次输入免yes 和ssh-keygen免交互