ピーナッツP1086 []を選ぶ問題の解決策

我々はすべて知っているように、サルは直線を歩いていく、そう......プラス2点間の距離は、縦、横軸の間の差との間の差であります

我々はすべて知っているように1、プログラムとしてよくない猿の猿インテリジェンスは、カードをプレイするつもりはありません。

2.工場では、ルートが固定され、最小の植物への最大のものから選択する必要がありますので

3.簡単なシミュレーション:あなたは後に意見を得るために戻ってピック、ピーナッツピックを拾うために戻っていない場合。

#include <ビット/ STDC ++ H.>
  使用して 名前空間STD;
  int型 M、N-、T、TOT、XはTi、SHであり; // のTi:時間は、現在費やし; SH:今収穫ピーナッツの数(ピンインは"SH"を収穫しました)
 構造体ノード{
     int型の X、Y、SL; // X:横軸、Y:縦; SL:数ピーナッツ 
 } HS [ 405 ]; // 構造:田中ピーナッツ植物が格納
 BOOL 比較(ノードBノード)
 { 
    戻り、a.sl> b.sl // 構造ソート、<上昇を表す>下降用
}
  int型のmain()
 { 
    scanfの(" %D%D%D "、&​​M、およびN - 、&​​T)を、// 魂への
    ためのint型 I = 。1; I <= M; I ++ のためのINT J = 1。 ; J <= N; J ++ 
        { 
            scanfの(" %のD "、およびX); // いくつかの植物ピーナッツ植物、いくつかの空所
            IF(X)HS 【++ TOT] .X = I、HS [TOT] .Y = J、HS [TOT]の.sl = X; // ピーナッツが時間行列の浪費を避けるために、記録された場合 
         } // TOTは、ピーナッツ植物の数を示し、 
    ソート(HS + 1、TOT + + HS 1、比較); // ピーナッツ複数前方放電
    IF(HS [ 1 ]・X +は1 > T){COUT << 0 ; 戻り 0 ;} //また取られていない最大ピーナッツマイニングが収集されない場合は(時間をピッキング、ピーナッツをスキップするX時間、xはバック時間をジャンプすべきである)
     {たTi = HS [ 1 ] .X + 1 ; SH = HS [ 1 ]の.sl;} // 彼のモデルを採用することができる
    ためint型 I = 2 ; I <= TOT Iが++)// 最初の株を取られた、開始採掘から二行目
        のIF(チタン(Ti + ABS(HSを[I] .X-HS [I- 1 ] .X)+ ABS(HS [I] .Y-HS [I- 1 ] .Y)HS + [I] .X + 1)<= T){ // 元の時間+ + +の横軸との間の差は、差動場合路側ジャンプ座標バック時間+ 1期間を選ぶことは、いくつかのスキップピック超えない 
          TI + = ABS(HS [I ] .X-HS [I-を1 ] .X)+ ABS(HS [I] .Y-HS [I- 1 ]・Y)+ 1 ; // 費やされた時間での電流差+ + =ピッキング+ 1時間の縦軸との間の差の横軸
          HS + = SH [I]の.sl; // ピーナッツ腕に隠れる
        }
         他の BREAK ; // 最も以上への特定の順序は、収集されない場合には貪欲ではなく、収集しませんので、 
    coutの<< SH ; // 出力スキル
    戻り 0 ; 
 }

 

  

おすすめ

転載: www.cnblogs.com/fjnhyzCYL/p/11323731.html