Uva 11384 正整數序列

2022-04-01 07:18:08 字數 514 閱讀 6275

題意:給定正整數 n,用最少的操作把序列 1,2,,,n 全部變成 0;

操作是:每次可以從序列中選擇乙個或者多個,同時減去乙個相同的數。

其實是乙個遞迴分治的思想,把一部分數字選出來,同時一減,結果就變成了前面沒有減過的了,數量不影響結果,反正可以一次拿出很多來操作。

那麼怎麼選擇,使得 n 到 x 的時候 x 最小呢?

經過嘗試,發現,減後面一半是最好的,f(n) = f(n/2) + 1;

f(1) = 1;

1 #include 2

3using

namespace

std;45

int dp(int

n) 10

11int

main()

1217

return0;

18 }

view code

UVa11384正整數序列 遞迴,二分

題目大意 有乙個從1 2 3 n的正整數數列,現在要通過若干次操作將這個數列全部變為0,操作的方法是每次選取任意1個或多個任意位置的數,然後將這幾個數同時減去乙個乙個數。問至少要經過多少次操作才能讓數列全部變為0 思路 在紙上試幾個數就可以發現,比如6時,456同時減去4這個中間數,剩下123012...

滿足條件的正整數序列

問題描述 小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 每一行包含乙個整數n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 ...

OJ 1036 正整數序列

描述 給定正整數n,你的任務是用最少的運算元把序列1,2,3,n 1,n都變成0.每次操作可從序列中選擇乙個或多個整數,同時減去乙個相同的正整數.比如1,2,3可以把2,3同時減去2,變成1,0,1.輸入多組測試資料,每組僅一行,為正整數n.1 n 10 9 輸出對於每組資料輸出最少的操作次數 輸入...