\(Sol\)

约定\(pos\)为老张所处的位置的路灯号,\(i<pos,j>pos\).

显然,如果\(i\)和\(j\)都关了,那么它们之间的所有灯一定也都关了.

设\(f[i][j][k]\)表示关掉\([i,j]\)的灯,现在在\(k\)位置(\(k=i\)或\(k=j\)),所有路灯的功耗.

转移有两种,显然,懒得写了.

记搜即可.

\(Code\)

写得挺复杂的,感觉都可以评上最长代码了.

#include<bits/stdc++.h>
#define il inline
#define Ri register int
#define go(i,a,b) for(Ri i=a;i<=b;++i)
#define yes(i,a,b) for(Ri i=a;i>=b;--i)
#define e(i,u) for(Ri i=b[u];i;i=a[i].nt)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Ri x=0,y=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
return x*y;
}
const int N=60;
int n,c,sw[N],s[N],as,rem[N][N][N];
struct nd{int p,w;}a[N];
il int sol(Ri l,Ri r,Ri p)
{
Ri ret=0;
if(rem[l][r][p])return rem[l][r][p];
if(l==c)
{
go(i,l+1,r)ret+=s[i];;ret+=(sw[n]-(sw[r]-sw[l-1]))*(a[r].p-a[l].p);
if(p==c)ret+=(sw[n]-(sw[r]-sw[l-1]))*(a[r].p-a[l].p);
return rem[l][r][p]=ret;
}
if(r==c)
{
go(i,l,r-1)ret+=s[i];;ret+=(sw[n]-(sw[r]-sw[l-1]))*(a[r].p-a[l].p);
if(p==c)ret+=(sw[n]-(sw[r]-sw[l-1]))*(a[r].p-a[l].p);
return rem[l][r][p]=ret;
}
if(p==l)
{
ret=sol(l+1,r,l+1)+(sw[n]-(sw[r]-sw[l]))*(a[l+1].p-a[l].p);
ret=min(ret,sol(l+1,r,r)+(sw[n]-(sw[r]-sw[l]))*(a[r].p-a[l].p));
}
else
{
ret=sol(l,r-1,l)+(sw[n]-(sw[r-1]-sw[l-1]))*(a[r].p-a[l].p);
ret=min(ret,sol(l,r-1,r-1)+(sw[n]-(sw[r-1]-sw[l-1]))*(a[r].p-a[r-1].p));
}
return rem[l][r][p]=ret;
}
int main()
{
n=read(),c=read();
go(i,1,n)
a[i]=(nd){read(),read()},sw[i]=sw[i-1]+a[i].w;
go(i,1,n)s[i]=abs(a[i].p-a[c].p)*a[i].w;
as=min(sol(1,n,1),sol(1,n,n));
printf("%d\n",as);
return 0;
}

最新文章

  1. 关于Blender
  2. 原生js tab 栏切换
  3. Jquery中的checkbox 及radio的问题
  4. iPad开发--iPad中modal的更多用法
  5. [转]在WPF中使用WinForm控件方法
  6. VOL.2 IE6,7,8(windows vista/7 x86/x64 )单文件版三连发,欢迎大家分享
  7. 将rcc.exe添加到系统Path
  8. Javascript语言精粹之String常用方法分析
  9. Java之IO流基础流对象
  10. Nginx redirect
  11. 转发:招聘一个靠谱的 iOS
  12. 2018-2019-20175334实验一《Java开发环境的熟悉》实验报告
  13. 第四天,通过windows来执行第一个python文件步骤
  14. 【Java】XML文件的解析
  15. 如何设置Git SSH密钥
  16. 算法中的 log 到底是什么?
  17. Android逆向之旅---Native层的Hook神器Cydia Substrate使用详解
  18. Object类中通用方法之:toString()方法
  19. Vijos / 题库 / 输油管道问题
  20. 初探BeEF

热门文章

  1. Bitmap的recycle问题
  2. Best Open Source Software
  3. HTML打印print
  4. Web应用中request获取path,URI,URL
  5. H3C 链路层协议
  6. Laravel根据Ip获取国家,城市信息
  7. svg和canvas比较以及svg简单介绍
  8. ios9.3.3 h5的js代码全部失效
  9. Git篇
  10. P1007 N钱M鸡问题