2018第九屆藍橋杯省賽C++B組【第四題:測試次數】
第四題
標題:測試次數
星球的居民脾氣不太好,但好在他們生氣的時候唯一的異常舉動是:摔手機。
各大廠商也就紛紛推出各種耐摔型手機。x星球的質監局規定了手機必須經過耐摔測試,並且評定出一個耐摔指數來,之後才允許上市流通。
x星球有很多高聳入雲的高塔,剛好可以用來做耐摔測試。塔的每一層高度都是一樣的,與地球上稍有不同的是,他們的第一層不是地面,而是相當於我們的2樓。
如果手機從第7層扔下去沒摔壞,但第8層摔壞了,則手機耐摔指數=7。
特別地,如果手機從第1層扔下去就壞了,則耐摔指數=0。
如果到了塔的最高層第n層扔沒摔壞,則耐摔指數=n
為了減少測試次數,從每個廠家抽樣3部手機參加測試。
某次測試的塔高為1000層,如果我們總是採用最佳策略,在最壞的運氣下最多需要測試多少次才能確定手機的耐摔指數呢?
請填寫這個最多測試次數。
注意:需要填寫的是一個整數,不要填寫任何多餘內容。
題解:
動態規劃或者記憶化搜尋
dp[x][y]表示當前還剩x樓不確定,還有y部手機沒爆。
程式碼
#include<stdio.h>
#define Max(a,b) (a>b?a:b)
#define Min(a,b) (a<b?a:b)
int dp[1005][50];
int main(int argc, char* argv[])
{
int n,m;
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++)
{
dp[i][1]=i;
}
for (int cnt=2;cnt<=m;cnt++)
{
for (int ind=1;ind<=n;ind++)
{
dp[ind][cnt]=1+dp[ind-1][cnt];
for (int k=2;k<=ind;k++)
dp[ind][cnt]=Min(dp[ind][cnt],1+Max(dp[k-1][cnt-1],dp[ind-k][cnt]));
}
}
printf("%d\n",dp[n][m]);
return 0;
}
答案
19
相關文章
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科A組)Java
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 2018年第九屆藍橋杯省賽試題及詳解(Java本科B組)Java
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 第九屆藍橋杯省賽C++A組 倍數問題(dfs)C++
- 第十五屆藍橋杯C++B組省賽總結C++
- 第九屆藍橋杯B組省賽———乘積最大
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 2018藍橋杯省賽B組
- 2013年第四屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 第十三屆藍橋杯省賽A組
- 第九屆藍橋杯軟體類省賽 Java B組 題目及解析Java
- 2013第四屆藍橋杯省賽C++A組【第一題:高斯日記】C++
- 2022年藍橋杯C++B組國賽-試題D-最大數字C++
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 第六屆藍橋杯省賽CC++B組C++
- 2015年藍橋杯六屆省賽大學B組真題
- 2017省賽藍橋杯B組
- 藍橋杯第五屆省賽題目及題解
- 2016年省賽第七屆藍橋杯B組C/C++第九題解 交換瓶子C++
- 2016年藍橋杯C/C++組省賽第四題--快速排序C++排序
- 2014年第五屆藍橋杯省賽試題及詳解(Java本科C組)Java
- 2019年省賽第十屆藍橋杯B組C/C++試題H解 等差數列C++
- 試題B:小球反彈(第十五屆藍橋杯省賽B組c/c++組)C++
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 第十三屆藍橋杯省賽C/C++ B組C++
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 藍橋杯省賽真題2013題解
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 第14屆藍橋杯B組國賽
- 第十四屆藍橋杯省賽C++ B組(個人經歷 + 題解)C++
- 2017第八屆藍橋杯C/C++ B組省賽第二題 秒解C++
- 歷屆藍橋杯省賽(C、C++)的答案(轉)C++
- 2016年藍橋杯C/C++組省賽第一題--煤球數目C++
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 藍橋杯歷年(省賽)試題彙總及試題詳解