1727 吃烤肉
来源:互联网 发布:方框图用什么软件 编辑:程序博客网 时间:2024/04/28 10:16
Alex最近和朋友去HLX吃了一次自助烤肉。每种肉的价值都不同,既然花了钱,大家自然想把花的钱给吃回来。最好全吃像培根,鱿鱼之类的。但是每种肉供应有限,加之吃的种类太少也没意思。所以Alex决定在吃的种类不少于k种的前提下,尽量吃回最大价值的肉。但是Alex的肚子能装的东西是有限的...
- 输入
一共包含t组数据,对于每组数据:
第一行给出四个整数c(c>=k*m),s,k(k<s),m,分别代表Alex能吃下的烤肉总克数,烤肉品种总数,Alex决定最少吃的种数,和对于吃的某种肉,最少吃的克数。
以下s行,每行2个整数w(w>=m),v,分别代表每种肉的总克数和每克的价值。- 输出
对于每组数据:
包含一行,为Alex能吃下的肉的最大总价值。动态规划题目
#include<iostream>#include<vector>#include<algorithm>using namespace std;struct meat{ int weight; int value;};bool com( const struct meat& m1, const struct meat& m2 ){ if ( m1.value < m2.value ) return true; else return false;}int main(){ int t; cin >> t; for ( int e = 0; e < t; e++ ) { vector<struct meat> vp; int c, s, k, m; cin >> c >> s >> k >> m; int w, v; for ( int i = 0; i < s; i++ ) { cin >> w >> v; struct meat m = { w, v }; vp.push_back( m ); } sort( vp.begin(), vp.end(), com ); int sum = 0; for ( int i = 0; i < k; i++ ) { vp[ s-1-i ].weight -= m; sum += m * vp[ s-1-i ].value; } c -= m * k; int r = s-1; while ( r >= 0 && c > 0 ) { if ( vp[ r ].weight != 0 ) { if ( c > vp[ r ].weight ) { sum += vp[ r ].value * vp[ r ].weight; c -= vp[ r ].weight; vp[ r ].weight = 0; } else { sum += c * vp[ r ].value; break; } } r--; } cout << sum << endl; } return 0;}
- 1727 吃烤肉
- 汉丽轩烤肉
- 烤肉 + 球赛
- J10 与 烤肉
- 章鱼烤肉火锅
- 吃!
- 吃
- hdu 2047 递归函数 烤肉串联
- 百度在线告百度烤肉商标侵权
- Likecloud-吃、吃、吃
- P1508 Likecloud-吃、吃、吃
- P1508 Likecloud-吃、吃、吃
- 又是一个可以免费烤肉串的天气啊
- 上周六出去烤肉随便拍了几张
- 五十 烤肉之后 我在软件园的那些日子里
- 洛谷 1508 Likecloud-吃、吃、吃
- 洛谷1508 Likecloud-吃、吃、吃
- 洛谷 P1508 Likecloud-吃、吃、吃
- 1722 取石子游戏2
- 理解 Delphi 的类(四) - 初识类的事件
- 1724 GGraph
- win7减少病毒入侵的数量
- java异常处理
- 1727 吃烤肉
- Java基础—异常处理总结
- 鼠标--滚轮事件
- STL set
- GDI+编程基础(一)GDI+ Vs GDI
- 理解 Delphi 的类(五) - 认识类的继承
- 磁带机的回复问题
- 忘得差不多了,忘得差不多了
- C#学习网站推荐