题目描述

最近H胖胖可爱吃东西了,既想吃草莓,又想吃菠萝,还想吃肉夹馍,可是他有点挑剔,想吃的任何东西都有一个最小值(本胖胖最少要这些才不会不高兴),当然也有最大值(给本胖胖过多,本胖胖也不会喜欢的),为了使胖胖的心情值最大,请大家帮帮忙。

输入

现在给出胖胖需要的物品总量N(1<=N<=100)和自身能给的物品总数M(1<=M<=10000),之后N行,每行三个数字k1,k2,k3,k1表示对此物品需要的最小值,k2表示对此物品需求的最大值,k3表示胖胖每得到一个此物品之后的心情值。

输出

输出H胖胖最大的心情值,若能给的物品总数小于H胖胖要求每件物品最小值之和,则输出-1.

样例输入

3 5
1 4 2
1 2 5
2 2 1

样例输出

14

提示

H胖胖想要三个物品,给胖胖三件物品最小值之后心情值是2+5+1*2=9,还剩5-4=1件物品,最后给胖胖第二件物品得到心情值5,则最后的心情值为9+5=14。建议使用结构体,排序使用库函数的快速排序。

C++快速排序使用方式举例:
#include
struct node{
int n1,n2;
}
bool cmp(node n1,node n2){
return n1.n1 > n2.n1; //按照结构体中的n1排序
}
int main(){
node n[100];
sort(n,n+100,cmp);
/*
对结构体node排序,第一个参数是要排序的结构体数组名称(第一个结构体地址),第二个参数是结构体数组第100个结构体地址,cmp是自定义排序方式
*/
}

代码

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cstdlib>
using namespace std;
struct node
{int x;int y,z;
}q[150];
bool cmp(node z,node y)
{return z.z > y.z;
}
int main()
{int n,m;int i,j,zk=0,qp=0,ans=0;cin>>n>>m;for(i=0;i<n;i++){cin>>q[i].x>>q[i].y>>q[i].z;qp=qp+q[i].x;    //qp是用来记录胖胖所需物品的最小值zk=zk+((q[i].z)*(q[i].x));  //zk是满足所有物品最小值后会得到的快乐值}if(m<qp){ans=-1;}if(m==qp){ans=ans+zk;}if(m>qp){m=m-qp;ans=ans+zk;sort(q,q+n,cmp); //按照快乐值从大到小排序j=0;while(m>0 && j<n)  //注意循环条件中的j<n,否则当提供的m足够大时无法跳出循环{int op=q[j].y-q[j].x;if(m<op){ans=ans+m*q[j].z;m=0;}if(m>=op){ans=ans+(op*(q[j].z));m=m-op;}j++;}}cout<<ans<<endl;return 0;
}

程序设计基础结课考试中的一道题

YTU之挑剔的H胖胖相关推荐

  1. YTU 3374: H胖胖的健身计划

    3374: H胖胖的健身计划 链接: 我在这里快点我. 题目描述 L老师布置了一道思考题,一个人一次可以上一个台阶,也可以上两个台阶,问上到n级台阶有多少种走法?H胖胖非常聪明,拿出胖胖的小手掐指算起 ...

  2. YOJ3394-挑剔的H胖胖

    题目描述 最近 H 胖胖可爱吃东西了,既想吃草莓,又想吃菠萝,还想吃肉夹馍,可是他有点挑剔,想吃的任何东西都有一个最小值(本胖胖最少要这些才不会不高兴),当然物以稀为贵,物品也不是管够的(本胖胖想要的 ...

  3. [YTU]_2354 (H 实现复数类中的加运算符重载【C++运算符重载】)

    #include <iostream> using namespace std; class Complex { public:Complex();//此函数必须定义Complex(dou ...

  4. BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )

    按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...

  5. YTU 1495 蛇行矩阵 YTU 1607 字符棱形YTU 1959 图案打印YTU 2016 打印金字塔

    YTU1495: 蛇行矩阵 题目描述: Time Limit: 1 Sec  Memory Limit: 64 MB 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input 本题有多组数 ...

  6. 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...

    的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...

  7. bzoj 1691: [Usaco2007 Dec]挑剔的美食家(multiset贪心)

    1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 879  Solved: 445 [Submit] ...

  8. YTU 《过瘾的打折季》

    YTU <过瘾的打折季> 问题 G: 过瘾的打折季 时间限制: 1 Sec 内存限制: 128 MB 提交: 508 解决: 338 [提交][状态][讨论版][命题人:helijian_ ...

  9. YTU OJ Problem 3013

    YTU OJ Problem 3013 皇后问题(递归) 题目描述 编写一个函数,求解皇后问题:在 n × n 的方格棋盘上,放置 n 个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求: 1 ...

最新文章

  1. 错误: (串列)对象不能强制改变成'double'解决办法
  2. OpenCL与异构并行计算
  3. Java HashMap的死循环
  4. grub2从usb启动
  5. 从浏览器地址栏输入url到显示页面的步骤
  6. linux安装静默安装was7,WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)
  7. 处理Clob数据(转)关于oracle中大对象处理的一些方法和实例
  8. web安全day41:三种典型渗透测试流程
  9. Android - 浅谈 Handler 机制
  10. 行政事业单位固定资产管理系统,资产管理系统操作手册
  11. SAP ABAP ALV 布局 特定用户 及缺省设置控制
  12. 文件包含漏洞及简单绕过
  13. 【SRAM】CubeMX配置STM32H743+IS61WV204816外部扩展SRAM
  14. 基于PHP+MySQL实现注册和登录功能
  15. 从0到1,反距离加权IDW(Inverse Distance Weighted Interpolation) 插值变形算法
  16. 【ML】Markov Chain Monte Carlo(MCMC)---Slice sampler(切片采样)和Hierarchical Models(层次模型)
  17. 【谈谈知识点】AC自动机
  18. 【SIM卡】Sim 卡掉卡
  19. Druid线程池中的连接什么时候会关闭?
  20. c语言switch语句中文,C语言switch语句问题。

热门文章

  1. php smarty变量调节器,Smarty模板变量与调节器实例详解
  2. 卡卡助手导致OE故障,致使邮件丢失!
  3. mud使用mysql_MUD
  4. 分布式存储实现的方式有哪些?iSCSI和NBD的区别
  5. 安装淘宝镜像的cnpm
  6. OpenWhisk feeds的模式和实现
  7. 三参数 S-N 曲线拟合及MATLAB程序
  8. html5 离线资源缓存,html5的离线缓存使用方法
  9. 怎么计算机械加工产能,产能计算方法
  10. 基于ACCESS在线考试自动组卷系统设计