您的位置:首页 > 其它

luoguP2637 【第一次,第二次,成交!】

2018-04-06 08:47 155 查看

P2637 【第一次,第二次,成交!】

传送门

题目描述

因为奶牛们的节食运动(奶牛还节食?)给农夫JOHNJOHN余下了一大批干草无法处理,所以他准备要开一个拍卖会去出售他的干草。

他有N(1<=N<=1000)N(1<=N<=1000)批干草(每批大约100100捆)。

他的客户有MM个(1<=M<=10001<=M<=1000),都是和他相邻的农夫。

第II名农夫会告诉农夫JOHNJOHN他会为农夫JOHNJOHN的每批干草付PiPi的钱(1<=Pi<=1,000,0001<=Pi<=1,000,000)。

每个农夫都想买(也只想买)农夫JOHNJOHN的一批草料。

为了确保农夫们不会互相嫉妒,所以农夫JOHNJOHN决定要以一个固定的价格出售他的草料。

每一个出价比农夫JOHNJOHN的要价要高的农夫将会买到草料,余下的将会被拒绝购买:< 请你帮助农夫JOHNJOHN找出能让他赚到最多的钱的最低的单批草料的售价。

输入输出格式

输入格式:

第一行:两个被空格隔开的整数,NN和MM

第二行到第M+1M+1行:第I+1I+1行只包含一个整数:PiPi

输出格式:

第一行:由空格隔开的两个整数:农夫JOHNJOHN能出的每批草料的最低价格,以及他能赚到的最多的钱

输入输出样例

输入样例#1:

55 44

22

88

1010

77

输出样例#1:

77 2121

说明

输入样例解释:

农夫JOHNJOHN有55批草料,44个农夫想要购买。

他们出价分别为:每批草料为22,88,1010和77。

输出样例解释:

农夫JOHNJOHN应该把价格设定为77,这样会有33个农夫会付钱买草料,农夫JOHNJOHN自己会挣到2121的钱。

又可以和大家见面了,小菜鸡感到非常兴奋。

因为,最近成功发布了一片难度为      提高+/省选- 的题解。

不过我这次要发的是难度为      入门难度      的题解,想帮一帮新手(突然忘了自己的身份)。

来回到正题,和明显这道题考查的是排序(sortsort)。

开讲思路:

1.首先什么都不做,先来打个快排。

2.模拟每一个,比较并统计。

3.最后肯定是输出。

用代码说话:

#include<cstdio>//调用      scanf和printf      的库
#include<algorithm>//调用      sort      的库
using namespace std;
const int mx=1010;//定义常量mx
int n,m,s,ansa=0,ansb=0;
int a[mx];
//定义变量
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=m;i++)scanf("%d",&a[i]);
//美好的输入
sort(a+1,a+m+1);//sort(快排)
for(int i=m;i>0;i--)//从最高处开始模拟
{
if((m-i+1)*a[i]>ansb)ansa=a[i],ansb=(m-i+1)*a[i];//更新每批草料的最低价格,以及他能赚到的最多的钱
}
printf("%d %d",ansa,ansb);//完美的输出
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐