洛谷 P1220 关路灯(DFS)
题目描述
某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。
为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地去关,但是老张不知道怎样去关灯才能够最节省电。他每天都是在天亮时首先关掉自己所处位置的路灯,然后可以向左也可以向右去关灯。开始他以为先算一下左边路灯的总功率再算一下右边路灯的总功率,然后选择先关掉功率大的一边,再回过头来关掉另一边的路灯,而事实并非如此,因为在关的过程中适当地调头有可能会更省一些。
现在已知老张走的速度为1m/s,每个路灯的位置(是一个整数,即距路线起点的距离,单位:m)、功率(W),老张关灯所用的时间很短而可以忽略不计。
请你为老张编一程序来安排关灯的顺序,使从老张开始关灯时刻算起所有灯消耗电最少(灯关掉后便不再消耗电了)。
输入输出格式
输入格式:
文件第一行是两个数字n(0
#include<iostream>
#include<cstdio>
using namespace std;
struct cc{int num,p;
}a[55];
int n,k;
int ans=1e9;
void dfs(int x,int l,int r,int sum,int cnt,int now)//向左搜,向右搜
{if(sum>ans)//剪枝{return;}if(cnt==n)//全都关完了{ans=min(ans,sum);return;}if(l>=1){dfs(l,l-1,r,sum+(a[x].num-a[l].num)*now,cnt+1,now-a[l].p);}if(r<=n){dfs(r,l,r+1,sum+(a[r].num-a[x].num)*now,cnt+1,now-a[r].p);}
}
int main()
{int sum=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++){scanf("%d%d",&a[i].num,&a[i].p);sum+=a[i].p;}dfs(k,k-1,k+1,0,1,sum-a[k].p);printf("%d",ans);return 0;
}
洛谷 P1220 关路灯(DFS)相关推荐
- 【区间dp】洛谷 P1220 关路灯
P1220 关路灯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 有一排路灯,老张有一个初始位置,他要把所有路灯都关掉.每个路灯都有各自的功率和坐标,问你关掉所有路灯所消耗 ...
- 洛谷P1220 关路灯(区间dp)
关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...
- [洛谷]P1220 关路灯 (#区间dp)
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- 洛谷 P1220 关路灯 [动态规划做法]
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- 洛谷 P1433 吃奶酪 dfs剪枝
洛谷 P1433 吃奶酪 dfs剪枝 题解: dfs+剪枝,不过现在好像被卡时间了,第10个点过不了.. 代码如下: #include<iostream> #include<algo ...
- 四川2008省选·洛谷·奖励关
初见安~这里是传送门:洛谷P2473 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出 ...
- luogu P1220 关路灯
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- P1220 关路灯 (区间dp)
题目链接 题解: 在关完路灯 i~j 时,老张要么在 i 处,要么在 j 处. 1. 要么是在关完 j 路灯后再回头关 i 路灯的,要么是在关完第 i+1 盏后继续前进关掉 i 的,在这两种情况中选择 ...
- 洛谷 - P1433 - 吃奶酪 - dfs
https://www.luogu.org/problemnew/show/P1433 并不是每一个求最短距离就是bfs,这个肯定是dfs. 直接计算15!可以知道枚举必定超时,但是! 我们dfs非常 ...
最新文章
- 登录界面的滑动_【提醒】电子税务局登录方式有变化! 8月31日关闭“原方式登录”...
- ICML 2020 | Google提出最强生成式摘要预训练模型——天马
- js确保正确this的几种写法
- Java注释:探究和解释
- Cloud一分钟 | 谷歌退出美国防部云计算竞标;网络黑灰产业已近千亿,个人信息泄露是源头...
- 学习笔记之lvm基本应用及其扩展和缩减实现
- Map集合-根据宠物昵称查找宠物
- efsframe java_EfsFrame(java开发框架)
- Discuz插件,批量Discuz采集发布插件
- 商淘软件S2B2C供应链系统 支持多种电商模式
- 神经网络过拟合解决方法,神经网络过拟合现象
- 【安全牛】一起来打靶第一周笔记
- 微信小程序系列4——传值详解
- 用Word转换向导批量转换Word文档(转)
- Android通过MediaStore获取音乐文件信息的方法
- 集赞活动朋友圈案例 餐饮店集赞活动方案 什么叫做集赞拓客?
- 20220210纪中集训总结
- androd11 编译 Manually written binder interfaces are considered error prone and frequently have bugs.
- label标签中的for属性
- Android手摸手实现一个画板功能(一)——View的拖拽