洛谷 P1220 关路灯 [dp]

本文介绍了洛谷P1220题目的解题思路,通过动态规划(dp)解决关路灯的电能消耗问题。分析了状态转移方程,探讨了从区间左侧或右侧扩展时的电能计算方法,帮助理解如何找到最优策略。
摘要由CSDN通过智能技术生成

题目:https://www.luogu.com.cn/problem/P1220
看了后面题解才会的这道题
https://www.luogu.com.cn/problemnew/solution/P1220
用f[i][j]表示i到j需要耗的电,因为关完i到j的时候人肯定在其中一边,所以用f[i][j][0]表示在左面1在右面
一个区间在往左扩展的时候,左边为i,上一次的边界就是i+1,扩到i时因为上一次是i+1到j,所以可能是i+1或j走过来的,所以
f[i][j][0] = min ( f[i+1][j][0] + ( a[i+1] - a[i] ) * ( sum[i] + sum[n] - sum[j] ) //i+1到i的路程乘这段时间其他所有开着的灯消耗的电
, f[i+1][j][1] + ( a[j]-a[i] ) * ( sum[i]+sum[n]-sum[j]) );

右边同理

#include <cstdio>
#include <cstring>
using namespace std;
const int MAXM=60;
int a[MAXM],b[MAXM],sum[MAXM],n,m,c;
int f[MAXM][MAXM][2];
int min(int a,int b)//这一点希望大家注意:最好max和min函数自己写,会有效的加快程序速度
{
   return a<b?a:b;}
int max(int a,int b)
{
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值