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

2022-05-03 13:21:19 字數 1343 閱讀 4177

因為奶牛們的節食運動(奶牛還節食?)給農夫john餘下了一大批乾草無法處理,所以他準備要開乙個拍賣會去**他的乾草。他有n(1<=n<=1000)批乾草(每批大約100捆)。他的客戶有m個(1<=m<=1000),都是和他相鄰的農夫。 第i名農夫會告訴農夫john他會為農夫john的每批乾草付p_i的錢(1<=p_i<=1,000,000)。每個農夫都想買(也只想買)農夫john的一批草料。 為了確保農夫們不會互相嫉妒,所以農夫john決定要以乙個固定的****他的草料。每乙個出價比農夫john的要價要高的農夫將會買到草料,餘下的將會被拒絕購買:< 請你幫助農夫john找出能讓他賺到最多的錢的最低的單批草料的售價。

輸入格式:

* 第一行:兩個被空格隔開的整數,n和m * 第二行到第m+1行:第i+1行只包含乙個整數:p_i

輸出格式:

第一行:由空格隔開的兩個整數:農夫john能出的每批草料的最低**,以及他能賺到的最多的錢

輸入樣例#1: 複製

5 428

107

輸出樣例#1: 複製

7 21

輸入樣例解釋:

農夫john有5批草料,4個農夫想要購買。他們出價分別為:每批草料為2,8,10和7。

輸出樣例解釋:

農夫john應該把**設定為7,這樣會有3個農夫會付錢買草料,農夫john自己會掙到21的錢。

/*

要讓john賣更多的錢。

我們把每個農夫出的錢降序排序。

列舉每個農夫 i=1 -> m ,

那麼i和i之前的農夫 1->i 都可以用p[i]的**買到草料,

所以 ans=max(ans,p[i]*min(i,n)),

為什麼要寫min(i,n),

是因為 可能會出現草料比農夫多的情況,

但是最多隻會有n個農夫來買草料,多餘的(m-n)批草料是不會有人買的。

所以,我們也可以直接讓i列舉到min(n,m)

然後讓ans=max(ans,p[i]*i)就行了。

*/#include

#include

#include

#include

using

namespace

std;

const

int n=1e3+5

;int

n,m;

intp[n];

intmain()//}

for(int i=1;i<=min(n,m);++i) //

也可以這樣寫,直接列舉到min(人,草)

}printf(

"%d %d

",ans_min,ans_sum);

return0;

}

洛谷P2637 第一次,第二次,成交!

題目鏈結 題目描述 因為奶牛們的節食運動給 fj 餘下了一大批乾草無法處理,所以他準備要開乙個拍賣會去 他的乾草。他有 n 批乾草 每批大約 100 捆 他的客戶有 m 個,都是和他相鄰的農夫。第 i 名農夫會告訴 fj 他會為 fj 的每批乾草付 p i 的錢。每個農夫都想買 也只想買 fj 的一...

洛谷 P2637 第一次,第二次,成交!

因為奶牛們的節食運動給 fj 餘下了一大批乾草無法處理,所以他準備要開乙個拍賣會去 他的乾草。他有 n 批乾草 每批大約 100 捆 他的客戶有 m 個,都是和他相鄰的農夫。第 iii 名農夫會告訴 fj 他會為 fj 的每批乾草付 p i 的錢。每個農夫都想買 也只想買 fj 的一批草料。為了確保...

第一次自考第二次總結

在前幾天也就是五月十七號的時候,我在自考的網上查到了我的第一自考的成績。怎麼說呢,總的來說是乙個真實水平的體現,但是還是有點超出我的意料。運籌學考了48分,管理經濟學考了70分。運籌學最終只考了48分是我沒有想到的,當時在考試的過程中,我還在慶幸這次的考試,遇到了幾個原題,但是,最後乙個五十分不到的...