贪心法 南阳oj 背包问题
2014-03-23 15:43
204 查看
可拆背包
#include<iostream> #include<algorithm> using namespace std; bool cmp(pair<int,int>a,pair<int,int>b) {return a.first>b.first;} int main() {int i,j,k,m,n,s; cin>>k; while(k--) { pair<int,int>a[1005]; cin>>s>>m; for(i=0;i<s;i++) cin>>a[i].first>>a[i].second; sort(a,a+s,cmp); i=0;int ans=0;int temp=0; while(i<s) { if(temp+a[i].second<=m) {temp+=a[i].second;ans+=a[i].first*a[i].second;} else if(temp+a[i].second>m&&temp<m) {ans+=a[i].first*(m-temp);temp=m;} i++; } cout<<ans<<endl; } return 0; }
相关文章推荐
- Centos中修改/etc/resolv.conf又恢复到原来的状态
- 发光输入框
- 结点 链表 练习
- Listview异步加载缓存图片,解决快速滑动问题
- 移动搜索引擎-网页信息预处理
- svn代码部署版本控制
- 贪心法 hoj1003
- 设计模式之依赖倒置原则 C++
- 丑小鸭进化 之 UML入门篇
- hdu 1394 Minimum Inversion Number 线段树
- 信号量,等待队列,异步通知,驱动例子
- Hadoop 2.2.0 环境 HIVE 0.11安装
- Mysql Dump
- mysqli扩展库操作
- 非归档遭遇ORA-00333导致数据库无法open
- 取数
- C# 多态
- 贪心法 foj1574
- 哥德巴赫猜想--多少种两个质数的和
- (一)简单工厂模式