求助!!!

P1220 关路灯

```cpp #include<bits/stdc++.h> using namespace std; int a[51]; int w[51]; int dd[51]; int qdd[51]; int f[51][51][2]; int main(){ int n,c; cin>>n>>c; for(int i=1;i<=n;i++){ cin>>a[i]>>w[i]; dd[i]=dd[i-1]+w[i]; } for(int i=n;i;i--){ qdd[i]=qdd[i+1]+w[i]; } memset(f,0x3f,sizeof(f)); for(int l=c;l;l--){ for(int r=c;r<=n;r++){ if(l==c&&r==c){ f[l][r][0]=0; f[l][r][1]=0; }else{ f[l][r][0]=min(f[l][r][0],f[l+1][r][0]+(a[l+1]-a[l])*(dd[l]+qdd[r+1])); f[l][r][0]=min(f[l][r][0],f[l+1][r][1]+(a[r]-a[l])*(dd[l]+qdd[r+1])); f[l][r][1]=min(f[l][r][1],f[l][r-1][0]+(a[r]-a[l])*(dd[l-1]+qdd[r])); f[l][r][1]=min(f[l][r][1],f[l][r-1][1]+(a[r]-a[r-1])*(dd[l-1]+qdd[r])); } } } cout<<min(f[1][n][0],f[1][n][1]); return 0; } ```
by Wzl111 @ 2024-04-06 13:28:15


|