P1909 買鉛筆 的題解

2022-06-01 20:54:13 字數 1845 閱讀 5371

p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有 33種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,**也有可能不同。為了公平起 見,p老師決定只買同一種包裝的鉛筆。

商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過nn支鉛筆才夠給小朋 友們發禮物。

現在p老師想知道,在商店每種包裝的數量都足夠的情況下,要買夠至少nn支鉛筆最少需要花費多少錢。

第一行包含乙個正整數nn,表示需要的鉛筆數量。

接下來三行,每行用22個正整數描述一種包裝的鉛筆:其中第11個整數表示這種 包裝內鉛筆的數量,第22個整數表示這種包裝的**。

保證所有的77個數都是不超過1000010000的正整數。

11個整數,表示p老師最少需要花費的錢。

1572

22350

3043027

view code

1

57

view code

1

9998

2128

2333

1282333

4128

666

view code

1

18407

view code

1

9999

2101

111131

9999

41111

9999

view code

1

89991

view code

鉛筆的三種包裝分別是:

p老師需要購買至少5757支鉛筆。

如果她選擇購買第一種包裝,那麼她需要購買2929份,共計2 \times 29 = 582×29=58支,需要花費的錢為2 \times 29 = 582×29=58。

實際上,p老師會選擇購買第三種包裝,這樣需要買22份。雖然最後買到的鉛筆數 量更多了,為30 \times 2 = 6030×2=60支,但花費卻減少為27 \times 2 = 5427×2=54,比第一種少。

對於第二種包裝,雖然每支鉛筆的**是最低的,但要夠發必須買22份,實際的花費達到了 30 \times 2 = 6030×2=60,因此p老師也不會選擇。

所以最後輸出的答案是5454。

【子任務】

子任務會給出部分測試資料的特點。如果你在解決題目中遇到了困難,可以嘗試 只解決一部分測試資料。

每個測試點的資料規模及特點如下表:

上表中「整倍數」的意義為:若為kk,表示對應資料所需要的鉛筆數量nn—定是每種包裝鉛筆數量的整倍數(這意味著一定可以不用多買鉛筆)。

使用位運算來進行大幅度累加,是倍增的思想

1 i<<1 等同於 i*2
view code

1 #include2

using

namespace

std;

3int

i,j,k,n,m,w,ans;

4int

main()517

while(j>n)

1822

while(j

2327

if(k0

)28 ans=k;//

判斷是否是最小花費29}

30 printf("

%d\n

",ans);

31return

0;//

輸出並返回

32 }

view code

洛谷 P1909 買鉛筆

題目描述 p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有 3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起 見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才夠給小朋 友們發禮物。現在p老師想知道,...

洛谷 P1909 買鉛筆

題目描述 p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有 3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起 見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才夠給小朋 友們發禮物。現在p老師想知道,...

洛谷新手村P1909 買鉛筆

題目描述 p老師需要去商店買n支鉛筆作為小朋友們參加noip的禮物。她發現商店一共有 3種包裝的鉛筆,不同包裝內的鉛筆數量有可能不同,也有可能不同。為了公平起 見,p老師決定只買同一種包裝的鉛筆。商店不允許將鉛筆的包裝拆開,因此p老師可能需要購買超過n支鉛筆才夠給小朋 友們發禮物。現在p老師想知道,...