YTU之挑剔的H胖胖
题目描述
最近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胖胖相关推荐
- YTU 3374: H胖胖的健身计划
3374: H胖胖的健身计划 链接: 我在这里快点我. 题目描述 L老师布置了一道思考题,一个人一次可以上一个台阶,也可以上两个台阶,问上到n级台阶有多少种走法?H胖胖非常聪明,拿出胖胖的小手掐指算起 ...
- YOJ3394-挑剔的H胖胖
题目描述 最近 H 胖胖可爱吃东西了,既想吃草莓,又想吃菠萝,还想吃肉夹馍,可是他有点挑剔,想吃的任何东西都有一个最小值(本胖胖最少要这些才不会不高兴),当然物以稀为贵,物品也不是管够的(本胖胖想要的 ...
- [YTU]_2354 (H 实现复数类中的加运算符重载【C++运算符重载】)
#include <iostream> using namespace std; class Complex { public:Complex();//此函数必须定义Complex(dou ...
- BZOJ 1691: [Usaco2007 Dec]挑剔的美食家( 平衡树 )
按鲜嫩程度排个序, 从大到小处理, 用平衡树维护价值 ---------------------------------------------------------------------- #i ...
- YTU 1495 蛇行矩阵 YTU 1607 字符棱形YTU 1959 图案打印YTU 2016 打印金字塔
YTU1495: 蛇行矩阵 题目描述: Time Limit: 1 Sec Memory Limit: 64 MB 蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形. Input 本题有多组数 ...
- 用c语言实现单链表的初始化,建表,查找,求长度,插入,删除等操作,【YTU+2430+C语言习题+链表建立+插入+删除+输(5)...
的打印.判断链表是否为空.计算链表长度.插入节点.删除节点.删除整个链表.(2) 线性表adt顺序存储实现中的创建.查找.插入和删除等基本操作及相关算法,线性表adt链式存储实现中单链表.循环链表和双 ...
- bzoj 1691: [Usaco2007 Dec]挑剔的美食家(multiset贪心)
1691: [Usaco2007 Dec]挑剔的美食家 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 879 Solved: 445 [Submit] ...
- YTU 《过瘾的打折季》
YTU <过瘾的打折季> 问题 G: 过瘾的打折季 时间限制: 1 Sec 内存限制: 128 MB 提交: 508 解决: 338 [提交][状态][讨论版][命题人:helijian_ ...
- YTU OJ Problem 3013
YTU OJ Problem 3013 皇后问题(递归) 题目描述 编写一个函数,求解皇后问题:在 n × n 的方格棋盘上,放置 n 个皇后,要求每个皇后不同行.不同列.不同左右对角线. 要求: 1 ...
最新文章
- 错误: (串列)对象不能强制改变成'double'解决办法
- OpenCL与异构并行计算
- Java HashMap的死循环
- grub2从usb启动
- 从浏览器地址栏输入url到显示页面的步骤
- linux安装静默安装was7,WAS7.0 - 安装并升级WAS7.0.0.31(静默安装)
- 处理Clob数据(转)关于oracle中大对象处理的一些方法和实例
- web安全day41:三种典型渗透测试流程
- Android - 浅谈 Handler 机制
- 行政事业单位固定资产管理系统,资产管理系统操作手册
- SAP ABAP ALV 布局 特定用户 及缺省设置控制
- 文件包含漏洞及简单绕过
- 【SRAM】CubeMX配置STM32H743+IS61WV204816外部扩展SRAM
- 基于PHP+MySQL实现注册和登录功能
- 从0到1,反距离加权IDW(Inverse Distance Weighted Interpolation) 插值变形算法
- 【ML】Markov Chain Monte Carlo(MCMC)---Slice sampler(切片采样)和Hierarchical Models(层次模型)
- 【谈谈知识点】AC自动机
- 【SIM卡】Sim 卡掉卡
- Druid线程池中的连接什么时候会关闭?
- c语言switch语句中文,C语言switch语句问题。