洛谷P3133 [USACO16JAN]ラジオコンタクトG

トピックポータル

問題解決のアイデア:

F [i] [j]は離れI-ステップであるFJ、ベッシーの最小消費値は、ステップjを行く。式プッシュより良いです。

この事WA半分の時間として、見つけるために水平および垂直座標。

ACコード:

1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <cmath>
 4  
5  使用 名前空間STDを、
6  
7  長い  N、M、X、Y、XX、YY、F [ 1002 ] [ 1002 ]。
8  長い 長い X1 [ 2003 ]、Y11 [ 2003 ]、X2 [ 2003 ]、Y2 [ 2003 ];
9  L、L1。
10  
11インライン長い 分(長い 長い長い 長いB){
12      であれば(> b)に戻り、B。
図13は、     返します14  }
 15  
16インライン長い (LEN int型 ID、INT II){
 17      長い 長い uは= 0 ;
18      長い 長い lenx = ABS(X1 [ID] - X2 [II])。
19      長い 長い LENY = ABS(Y11 [ID] - Y2 [II])。
20      U = lenx * lenx + LENY * LENY。
21は     返すuと。
22  }
 23  
24  INTメイン(){
 25      のscanf(" %LLD%LLD%LLD%LLD%LLD%LLD "、&​​N、&M、&Y、およびX&YY、&XX)。
26      CIN >> L >> L1。
27      ×1 [ 0 ] = X; Y11 [ 0 ] = Y; X 2 [ 0 ] = XX; Y2 [ 0 ] = YY。
28      のためにINT iが= 1 ; iが<= N; I ++ ){
 29          IFが(L [I- 1 ] == ' W ')y--を30          であれば(L [I- 1 ] == ' E ')Y ++ 31          であれば(L [I- 1 ] == ' N ')x ++ 32          であれば(L [I- 1 ] == ' S ')x-- 33          X1 [I] = X; Y11 [I] = Y。
34      }
 35      のためにINT iは= 1 ; iが<= M; I ++ ){
 36          であれば(L1 [I- 1 ] == ' W ')yy-- 37          であれば(L1 [I- 1 ] == ' E")YY ++ ;
38          であれば(L1 [I- 1 ] == ' N ')XX ++ 39          であれば(L1 [I- 1 ] == ' S ')xx-- 40          ×2 [I] = XX; Y2 [I] = YY。
41      }
 42      のためにINT iは= 1 ; iが<= N; I ++)F [i]が[ 0 ] = F [I- 1 ] [ 0 ] + LEN(I、0 );
43      のためにINT J = 1 ; J <= Mであり、j ++)F [0 ] [J] = F [ 0 ] [J- 1 ] + LEN(0 、j)は、
44      のためにINT iは= 1 ; iが<= N; I ++ 45          のためのINT J = 1 ; J <= Mであり、j ++ 46              F [I] [J] =分(F [I- 1 ] [J] 、分(F [I- 1 ] [J- 1 ]、F [i]は[J- 1 ]))+ LEN(i、j)は、
47      のprintf(" %のLLD " 、F [n]は[M])。
48      リターン 0 ;
49 }

 

おすすめ

転載: www.cnblogs.com/lipeiyi520/p/12339856.html