Code: #include <bits/stdc++.h> #define ll long long #define N 1003 #define setIO(s) freopen(s".in","r",stdin) using namespace std; void getmin(ll &a,ll b) { if(b<a) a=b; } ll x[N],sum[N],f[N][N][3],val[N]; int main() { //…
题目描述 某一村庄在一条路线上安装了 n 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地去关,但是老张不知道怎样去关灯才能够最节省电.他每天都是在天亮时首先关掉自己所处位置的路灯,然后可以向左也可以向右去关灯.开始他以为先算一下左边路灯的总功率再算一下右边路灯的总功率,然后选择先关掉功率大的一边,再回过头来关掉另…
传送门 区间dp f[i][j][state] : [i, j]区间 state=0 当前选i state = 1 当前选j 注意枚举的顺序 转移的设计时 在同时刻不在[i,j]区间里的数也要考虑 不符合局部最优性 #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b; ++i) ; ]; inline int cal(int x, int y, int l, i…