51Nod1306 高樓和棋子

2021-08-21 20:54:07 字數 1129 閱讀 6160

題目看這裡

乙個非常好的逆向思維題(都是套路233)

如果直接做發現其實可以做,但是資料範圍太大不能過了,具體做法參考這裡

開始正文:

首先,我們設f[

i,j]表示f

[i,j

]表

示在有i個棋子的情況下,扔j次能保證測出的樓層最高是多少,顯然如果n可以被測出,那麼n-1也可以被測出

於是考慮一下最優策略是什麼

在高度h扔乙個棋子下去,如果碎了,那麼說明高度

<

<

h,如果沒碎說明高度》=h

於是可以寫出f[

i,j]

=f[i

−1,j

−1]+

f[i,

j−1]+1f

[i,j

]=f[

i−1,

j−1]

+f[i

,j−1

]+

1發現這個式子,f[i]大約是i次多項式的級別

所以對於i=1,i=2需要特判:f[

1][j

]=j,

f[2]

[j]=

j∗(j

+1)2f[

1][j

]=j,

f[2]

[j]=

j∗(j

+1)2

剩下的直接dp就可以了

回答每乙個詢問在

f f

二分就可以了

#pragma gcc optimize("o3")

#pragma g++ optimize("o3")

#include

#include

#include

#include

#include

#define n 2000000

#define ll unsigned long long

using

namespace

std;

vector

f[65];

ll n,m; int t;

int main()

}for(scanf("%d",&t);t--;) else

}}

51Nod1306 高樓和棋子

題目看這裡 乙個非常好的逆向思維題 都是套路233 如果直接做發現其實可以做,但是資料範圍太大不能過了,具體做法參考這裡 開始正文 首先,我們設f i,j 表示 role presentation f i j 表 示f i j 表 示在有i個棋子的情況下,扔j次能保證測出的樓層最高是多少,顯然如果n...

51Nod1306 高樓和棋子 動態規劃

有個n層的高樓和若干個棋子,所有的棋子都是一樣的。棋子從樓的某層e扔到地上不會碎 0 e n 但從比這個樓層高的地方扔到地上都會碎。給出樓的高度n,以及棋子的數量m,你來找出這個e 0 e n 問最壞情況下需要實驗多少次才能計算出準確的e 如果棋子摔碎了,就不能繼續用這個棋子進行測試了 1 n 10...

51nod1534 棋子遊戲

1534 棋子遊戲 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 還有一些其它的限制,他們不能把棋子移動到x或y為負的座標,或者移動到已經被對手佔據的座標。最先到達 0,0 的人獲勝。現在給定他們棋子的座標,判斷一下誰會獲勝。input 單組測試資料。第一行包含...