HDU3177贪心
2015-11-29 21:17
239 查看
一开始认为是简单的贪心,就对bi进行排序,结果果断wrong掉!后来发现不是简单的排序问题
比如这样一组数据
20 3
物品1:10 20
物品2:3 10
物品3:1 7
如果先放二再放一即必须有:10+20+3=33的空间,如果先放一再放二:10+20+10=40;
这样比较才能尽可能用最小的空间放完东西
经过变换 得到差值比较b.b-b.a>a.b-a.a;
比如这样一组数据
20 3
物品1:10 20
物品2:3 10
物品3:1 7
如果先放二再放一即必须有:10+20+3=33的空间,如果先放一再放二:10+20+10=40;
这样比较才能尽可能用最小的空间放完东西
经过变换 得到差值比较b.b-b.a>a.b-a.a;
#include<stdio.h> #include<stdlib.h> #include<algorithm> using namespace std; struct elem { int a; int b; }el[10001]; bool cmp(struct elem a,struct elem b) { return a.b-a.a>b.b-b.a; } int main() { int T; int i,j; scanf("%d",&T); int v,n; int sum; while(T--) { memset(el,0,sizeof(el)); scanf("%d%d",&v,&n); for(i=0;i<n;i++) { scanf("%d %d",&el[i].a,&el[i].b); } sort(el,el+n,cmp); sum=v; for(i=0;i<n;i++) { if(sum<el[i].b) { sum=-1; break; } else { sum-=el[i].a; } } if(sum==-1) printf("No\n"); else printf("Yes\n"); } return 0; }
相关文章推荐
- AllJoyn概念概述
- context bounds
- Phython 学习笔记之——类的初步认识
- uva 1220——Party at Hali-Bula
- 1079. Total Sales of Supply Chain (25)
- C语言经典例程100例
- CSS-文本垂直居中
- Redis安装配置
- idea15写switch语句参数为String类型时冒红解决办法
- 关于《工业4.0时代,怎样为孩子筹备未来的教育 》的想法
- 修改linux文件权限命令:chmod
- ios button.imageview 和setimage的区别
- 【c#】—解密类String
- c++日期类
- 读书笔记
- 心情随笔
- 小技巧
- 《软件方法》阅读笔记(三)
- evel 的使用
- POM文件