搜尋
inline void dfs(int now,int l,int r,int cnt,int sum,int k)
/*now為當前點
l為左端點
r為右端點
cnt為當前耗電量
sum為開著的燈的總耗電
k為還有幾盞燈開著
*/
if(l>1)dfs(l-1,l-1,r,cnt+(m[now]-m[l-1])*sum,sum-w[l-1],k-1);
//若左端點可以向前移,那麼就往前移乙個單位,順便更新一下值
if(r=ans)return;//很好理解
dfs(c,c,c,0,tot-w[c],n-1);
//當前所在的路燈肯定被關掉了
完整**:
#includeusing namespace std;
int n,c;
int w[60],m[60];
int tot,ans=0x3f3f3f3f;
inline int read()
return tot;
}inline void dfs(int now,int l,int r,int cnt,int sum,int k)
//cout<1)dfs(l-1,l-1,r,cnt+(m[now]-m[l-1])*sum,sum-w[l-1],k-1);
if(r}int main()
洛谷 P1220 關路燈
某一村莊在一條路線上安裝了n盞路燈,每盞燈的功率有大有小 即同一段時間內消耗的電量有多有少 老張就住在這條路中間某一路燈旁,他有一項工作就是每天早上天亮時一盞一盞地關掉這些路燈。為了給村里節省電費,老張記錄下了每盞路燈的位置和功率,他每次關燈時也都是盡快地去關,但是老張不知道怎樣去關燈才能夠最節省電...
洛谷 P1220 關路燈
某一村莊在一條路線上安裝了n盞路燈,每盞燈的功率有大有小 即同一段時間內消耗的電量有多有少 老張就住在這條路中間某一路燈旁,他有一項工作就是每天早上天亮時一盞一盞地關掉這些路燈。為了給村里節省電費,老張記錄下了每盞路燈的位置和功率,他每次關燈時也都是盡快地去關,但是老張不知道怎樣去關燈才能夠最節省電...
洛谷 P1220 關路燈
原本想用搜尋先超時一把 然後發現剪枝居然過了 include include include include include include using namespace std int d 10005 記錄燈的功率 int lef,righ,minx int run int x,int y 記錄...