在雅禮中學聽matthew99講這道題
這道題不是特別難
拿到題目的時候就已經大概猜到解法長什麼樣了
令f[i]為從原點走到(i,i)點所需要花費的最小代價,顯然進入第i層前至少要向右移動i次再向下移動i次,路徑是由若干個l型組成的
考慮在第p行向右移動了一格代價為a[p],若存在乙個q
利用這個思路,每次轉移的時候向平行方向移動的那一次一定是字首最小值
#include
#include
#define n 100050
using
namespace std;
typedef
long
long ll;
int a[n],n;
voidut(
ll&x,
lly)
intmain
()// printf("%d\n",pos);
cout << ans << endl;
return0;
}