洛谷 P1220 關路燈 區間dp

2022-03-30 21:13:02 字數 702 閱讀 4394

分析一下,明顯的區間dp,我們以dp [i] [j] [1]表示在i 到j的路燈已關,且老張在j點的情況下所用功耗的最小值,dp [i] [j] [0]則表示老張在i點,接著就是區間dp部分,見**

#include#include#include#include#includeusing namespace std;

const int maxn=1e2;

inline int read()

ch=getchar();

} while(ch>='0'&&ch<='9')

return ret*f;

}int n;

int sum[maxn];

int dp[maxn][maxn][3];//dp[i][j][1]表示i到j的路燈全部關閉且老張在右邊,反之

int w[maxn];

int l[maxn];

int m;

int main()

memset(dp,127,sizeof(dp));

dp[m][m][0]=dp[m][m][1]=0;

for(int len=1;len來解釋幾點吧

因為要取最小值,便於min的取值,將dp陣列初始化為較大的乙個數

因為我們要最終取值為起點為老張的位置的情況

所以將老張初始位置的dp值設定為0。

大該就是這樣了。

洛谷P1220 關路燈(區間dp)

某一村莊在一條路線上安裝了n盞路燈,每盞燈的功率有大有小 即同一段時間內消耗的電量有多有少 老張就住在這條路中間某一路燈旁,他有一項工作就是每天早上天亮時一盞一盞地關掉這些路燈。為了給村里節省電費,老張記錄下了每盞路燈的位置和功率,他每次關燈時也都是盡快地去關,但是老張不知道怎樣去關燈才能夠最節省電...

洛谷 P1220 關路燈 區間DP

某一村莊在一條路線上安裝了 n 盞路燈,每盞燈的功率有大有小 即同一段時間內消耗的電量有多有少 老張就住在這條路中間某一路燈旁,他有一項工作就是每天早上天亮時一盞一盞地關掉這些路燈。為了給村里節省電費,老張記錄下了每盞路燈的位置和功率,他每次關燈時也都是盡快地去關,但是老張不知道怎樣去關燈才能夠最節...

洛谷P1220關路燈 區間dp

某一村莊在一條路線上安裝了 n 盞路燈,每盞燈的功率有大有小 即同一段時間內消耗的電量有多有少 老張就住在這條路中間某一路燈旁,他有一項工作就是每天早上天亮時一盞一盞地關掉這些路燈。為了給村里節省電費,老張記錄下了每盞路燈的位置和功率,他每次關燈時也都是盡快地去關,但是老張不知道怎樣去關燈才能夠最節...