濟南學習 Day 3 T1 pm

2021-07-28 20:35:27 字數 1492 閱讀 6957

巧克力棒(chocolate)

time limit:1000ms memory limit:64mb

題目描述

lyk 找到了一根巧克力棒,但是這根巧克力棒太長了,lyk 無法一口吞進去。

具體地,這根巧克力棒長為 n,它想將這根巧克力棒折成 n 段長為 1 的巧克力棒,然後

慢慢享用。

它打算每次將一根長為 k 的巧克力棒折成兩段長為 a 和 b 的巧克力棒,此時若 a=b,則

lyk 覺得它完成了一件非常困難的事,並會得到 1 點成就感。

lyk 想知道一根長度為 n 的巧克力棒能使它得到最多幾點成就感。

輸入格式(chocolate.in)

第一行乙個數 n。

輸出格式(chocolate.out)

乙個數表示答案。

輸入樣例

7輸出樣例

4資料範圍

對於 20%的資料 n<=5。

對於 50%的資料 n<=20。

對於 80%的資料 n<=2000。

對於 100%的資料 n<=1000000000。

樣例解釋

將 7 掰成 3+4, 將 3 掰成 1+2, 將 4 掰成 2+2 獲得 1 點成就感, 將剩下的所有 2 掰成 1+1

獲得 3 點成就感。總共 4 點成就感。

1 #include2 #include3 #include4

using

namespace

std;

5long

long

a,b;

6int

main()

715 printf("

i64d

",b);

1617

return0;

18}19/*

20思路(解析):

21發現ans=n-c(n)。c(n)表示n的二進位制中1的個數。

2223

粘乙個嚴謹的證明(其實我自己也沒認真看)

24我們對c(n)進行歸納。

25當c(n)=1時,即n=2^k,ans(n)顯然=(n-1)。

26我們假設c(n)<=x的情況下ans(n)=n-c(n)都成立。

27當c(n)=x+1時,我們要證明ans(n)=n-c(n)。

28令j為不超過n的2的冪次的最大值,

29有ans(n)=ans(n-j)+ans(j)=n-j-(c(n)-1)+j-1=n-c(n)。

30即ans(n)的下界為n-c(n)。

31將ans(n)分成兩個數i,j時有c(i)+c(j)>=c(n)。

32當i不等於j時,有ans(n)<=i-c(i)+j-c(j)<=n-c(n)。

33當i=j時,有c(i)+c(j)=2*c(n),

34ans(n)<=i-c(i)+j-c(j)+1<=n-c(n)*2+1,c(n)是正整數。

35綜上,ans(n)的上界也為n-c(n)。假設成立

36*/

濟南學習 Day 3 T1 pm

巧克力棒 chocolate time limit 1000ms memory limit 64mb 題目描述 lyk 找到了一根巧克力棒,但是這根巧克力棒太長了,lyk 無法一口吞進去。具體地,這根巧克力棒長為 n,它想將這根巧克力棒折成 n 段長為 1 的巧克力棒,然後 慢慢享用。它打算每次將一...

濟南學習 Day 3 T3 pm

仙人掌 cactus time limit 1000ms memory limit 64mb 題目描述 lyk 在衝刺清華集訓 thusc 於是它開始研究仙人掌 它想來和你一起分享它最近 研究的結果。如果在乙個無向連通圖中任意一條邊至多屬於乙個簡單環 簡單環的定義為每個點至多 經過一次 且不存在自環...

濟南學習 Day 3 T2 pm

lyk 快跑!run time limit 5000ms memory limit 64mb 題目描述 lyk 陷進了乙個迷宮!這個迷宮是網格圖形狀的。lyk 一開始在 1,1 位置,出口在 n,m 而且這個迷宮裡有很多怪獸,若第 a 行第 b 列有乙個怪獸,且此時 lyk 處於第 c 行 d 列,...