洛谷$1220$ 关路灯 记搜/$DP$
\(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;
}
洛谷$1220$ 关路灯 记搜/$DP$的更多相关文章
- 洛谷P1220 关路灯 题解 区间DP
题目链接:https://www.luogu.com.cn/problem/P1220 本题涉及算法:区间DP. 我们一开始要做一些初始化操作,令: \(p[i]\) 表示第i个路灯的位置: \(w[ ...
- 洛谷P1220 关路灯
洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...
- 洛谷 P1220 关路灯 题解
Description 有 $n$ 盏路灯,每盏路灯有坐标(单位 $m$)和功率(单位 $J$).从第 $c$ 盏路灯开始,可以向左或向右关闭路灯.速度是 $1m/s$.求所有路灯的最少耗电.输入保证 ...
- 洛谷P1220 关路灯(区间dp)
关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...
- 洛谷——P1220 关路灯
P1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉 ...
- 「LuoguP1220」 关路灯(区间dp
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- 洛谷P1220关路灯[区间DP]
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- 洛谷 P1220 关路灯 区间DP
题目描述 某一村庄在一条路线上安装了 n 盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了 ...
- 洛谷P1220关路灯——区间DP
题目:https://www.luogu.org/problemnew/show/P1220 区间DP. 代码如下: #include<iostream> #include<cstd ...
随机推荐
- Session机制在页面间保持Cookie——大街网
解决Cookie有效期,页面间Cookie传递 解決大规模,长期有效采集. 之前做一个项目,要采集招聘网站的职位信息,智联,拉钩,中华英才,BOOS,大街网,写完了前4个,大街网数据加载方式是AJAX ...
- Libev源码分析07:Linux下的eventfd简介
#include <sys/eventfd.h> int eventfd(unsigned int initval, int flags); eventfd创建一个eventfd对象,该对 ...
- laravel 验证码手机与提交手机的验证?
假如我用自己的手机号码获得了验证码,然后在点击提交之前,更换了手机号一栏的input,用一个比如18888888888的手机号进行注册,用之前得到的验证码,是不是会出现注册成功的情况?是否应该考虑验证 ...
- Android Animation动画实战(一): 从布局动画引入ListView滑动时,每一Item项的显示动画
前言: 之前,我已经写了两篇博文,给大家介绍了Android的基础动画是如何实现的,如果还不清楚的,可以点击查看:Android Animation动画详解(一): 补间动画 及 Android An ...
- Git的提交与查看差异
本文转载于:http://blog.csdn.net/crylearner/article/details/7685158 代码提交 代码提交一般有五个步骤: 1.查看目前代码的修改状态 2.查看代码 ...
- Nginx 的 location
一.location语法 语法: Syntax: location [ = | ~ | ~* | ^~ ] uri { ... } location @name { ... } Default: — ...
- PyTorch之前向传播函数自动调用forward
参考:1. pytorch学习笔记(九):PyTorch结构介绍 2.pytorch学习笔记(七):pytorch hook 和 关于pytorch backward过程的理解 3.Pytorch入门 ...
- POJ 2251宽搜、
因为这个题做了两次犯了两次不同的错误. 第一次用的dfs死活都超时 第二次把定义队列定义在了全局变量的位置,导致连WA了几次.最后找到原因的我真的想一巴掌拍死自己 #include<cstdio ...
- tensorflow学习笔记(二十五):ConfigProto&GPU
tensorflow ConfigPrototf.ConfigProto一般用在创建session的时候.用来对session进行参数配置 with tf.Session(config = tf.Co ...
- Innodb_large_prefix
innodb_large_prefix Prefixes, defined by the length attribute, can be up to 767 bytes long for InnoD ...