[Noip2018人気]カーフェリー

キャリアの回顧録は完全に触れました。とにかく、何も(人を見ないように

不思議の人気グループ神様ベンの講義を与えるために数日普遍的な問題は、その後、ほとんど,,ハンマーバースト何かをします

luogu上の質問探しhttps://www.luogu.org/problemnew/show/P5017を、投稿していません


二人の前に以上$ M $(往復時間)により、待機時間の後に、それを待つ必要がない必要がある場合、中央は旅行を送信することができますので、最初に考えてみましょう。だから我々はこの訪問をソートする$の4E6の$ T_I $の$無駄なデータのある範囲......確かに時間を見つけました。

だから、これは確かにfのDPになります[i] [j]は、すべての-前に個人を表し、私は離れて送信され、最後のバスは数分前に$私は、どのくらいの時間など個人を$合計$ I $ $ jの$を作るために待っていました。$ K $ $ K $の隣に1を送信する前に人を表し含め、 - [$ T_K $次のバスの時間がかかる] fを次に[i] [j]は、[k]はFに転送することができます。今回の出発時間は最大を取るXTK [I] [J] $表さ$ + mの$および$ $ F $を行くための次の列車です。ライン上のプレフィックスとメンテナンスに多くの時間を費やしています。まず、私は2番目の次元、あまりにも料理を考慮していませんでした。

コードは非常に遅く、一定の大きな人の食べ物を実行しています

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
CONSTの INT N = 510 const  int型 INF = 0x3f3f3f3f INT F [N] [N]、[N]、S [N]。
INT メイン(){ 
    memsetの(F、63はsizeofのF)。
    INTのN、M。
    CIN >> N >> M。
    以下のためにint型 i = 1 ; iが= <N; iは++ 
    CIN >> [I]。
    ソート(A + 1、+ N + 1 )。
    以下のためのint型i = 1 ; iは= <N; iは++ 
    S [I] = sの[I- 1 ] + [I]。
    F [ 0 ] [ 0 ] = 0 ; [ 0 ] = - INF。
    int型 I = 0 ; iが<= N iが++ ){
         ためint型 = K I + 1 ; kは<= N; ++ k個){
             ためINT J = 0 ; J <Mであり、j ++ ){
                 int型、T = MAX( [K]、[I] + J + M)。
                F [k]は[T -a [K] [I]、[J] + T×(KI)、F =分([K] [] K [TA] F、 - (S [k]は-S [I])); 
            } 
        } 
    } 
    のInt年= INF。
    INT J = 0 ; J <M、J ++  = 分(年、[J] [n]のF)。
    coutの <<年齢<< てendl; 
}

 

おすすめ

転載: www.cnblogs.com/orzzz/p/11100428.html