「ブルー・ブリッジ・カップ」C ++省グループB予選試合の試験周波数2018ブルーブリッジ(携帯電話投げ) - 動的プログラミング

転送ポータル

タイトル説明

住民気性のX惑星は非常に良いではありませんが、幸い彼らは異常な行動がある場合にのみ、怒る:携帯電話を投げます。
大手メーカーも飛散防止電話の多様性を導入しています。品質監督のX惑星局は、それが取引許可する前堅牢電話がテストされ、飛散防止指数によって評価されなければならい。
X惑星はちょうど耐久性試験のために使用することができ、多くのそびえ立つ塔があります。
彼らは地面の最初の層が、私たちの二階の等価ではありません、塔の各層の高さは同じであり、地球は少し異なります。
電話が破産しなかった場合は、レイヤ7が低下したが、8階には、携帯電話の耐久性指数= 7を破ったから。
特に、携帯電話は、第1層1からドロップされた場合に破壊意見、= 0凹凸指標です。
n層の上に塔が壊れた、耐久性指数= N投げていなかった場合は
テストの数、テストを取るための3つの携帯電話メーカーのそれぞれからサンプルを減らすために。
私たちは、常に最善の戦略を使用する場合は1000年レベルのテストのタワー高は、ほとんどの必要性はどのように多くの時間を決定するために、最悪の運で試験する携帯電話の耐久性指数それ?

輸出

出力は、整数の答えを表し、

 

アイデア:最適な下部構造のプロパティを記述

保証がインデックスを試すことができる唯一の携帯電話を開始するために第一層から層ごとを測定することであることは明らかです。

2台の電話機を使用すると、床の一部が削除され、カット統治の考えを使用することができ、時間を持っています。その後、我々は落下後2ケースに直面している、第一の携帯電話は、k層から落ち、n個の床の合計を想定

1.は、k層の合計を壊し、k番目の層(N> = k)に床層1を破壊すべきで決定することができます。

2.壊れていない、壊れた床は、n番目の層は、共NK層の最初のk + 1層であると決定されてもよいです。

私たちは、最適なサブ構造特性に問題を描くことができますように、第2、携帯電話を投げる前に、答えを得るためにから始まって見ることができ、我々は範囲のサブセットに層数を解決するたびに携帯電話投げの範囲は、携帯電話を投げます。

第三段階:解決凹凸インデックス

配置されているものを尋ねます

DP [i] [j]はステータスを示します:私はまだ残っているの床は識別されず、左Jフォンは最善の戦略、最悪の運に必要な最大数を使用しています。

第二のステップは、以下の式を得られます。

ACコード:

 

#include <iostream>
#include<cstring>
#include<stdio.h>
#include<algorithm>
#include <vector>
#include<iomanip>
#include <queue>
#include<stdlib.h>
#include<time.h>
#include<map>
#include<stddef.h>
using namespace std;
typedef long long ll;
const int mod=998244353;
int main(){
    int dp[1010][10];
    int n=1000,m=3;
    for(int i=1;i<=n;i++)
        dp[i][1]=i;
    for(int j=2;j<=m;j++){
        for(int i=1;i<=n;i++){
            dp[i][j]=0x3f3f3f3f;
            for(int k=2;k<=i;k++)
                dp[i][j]=min(dp[i][j],max(dp[k-1][j-1]+1,dp[i-k][j]+1));
        }

    }
    cout<<dp[n][m]<<endl;
    return 0;
}

 

公開された350元の記事 ウォンの賞賛715 ・は 50000 +を見て

おすすめ

転載: blog.csdn.net/ZCY19990813/article/details/104077389