大盗阿福(打家劫舍)
题目描述
阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。
这条街上一共有 N N N 家店铺,每家店中都有一些现金。
阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。
作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。
他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?
输入格式
输入的第一行是一个整数 T T T,表示一共有 T T T 组数据。
接下来的每组数据,第一行是一个整数 N N N ,表示一共有 N N N 家店铺。
第二行是 N N N 个被空格分开的正整数,表示每一家店铺中的现金数量。
每家店铺中的现金数量均不超过 1000 1000 1000。
输出格式
对于每组数据,输出一行。
该行包含一个整数,表示阿福在不惊动警察的情况下可以得到的现金数量。
数据范围
1 ≤ T ≤ 50 , 1≤T≤50, 1≤T≤50,
1 ≤ N ≤ 1 0 5 1≤N≤10^5 1≤N≤105
输入样例:
2
3
1 8 2
4
10 7 6 14
输出样例:
8
24
样例解释
对于第一组样例,阿福选择第2家店铺行窃,获得的现金数量为8。
对于第二组样例,阿福选择第1和4家店铺行窃,获得的现金数量为10+14=24。
首先定义对于任何一家店铺,小偷应有两个选择,即打劫or不打劫,因此可以列出任意两家相邻的店铺,它们间的状态机模型如下图所示
即对于 i − 1 i-1 i−1号店铺和 i i i号店铺:
- 如果 i − 1 i-1 i−1号被打劫了,那么转移到 i i i号的状态可以是不打劫,对应1路径。
- 如果 i − 1 i-1 i−1号是不打劫,那么转移到 i i i号的状态可以是打劫,对应2路径。
- 如果 i − 1 i-1 i−1号是不打劫,那么转移到 i i i号的状态可以是不打劫,对应3路径。
但如果 i − 1 i-1 i−1号被打劫了,转移到 i i i号的状态不能是打劫,因为这样做会触发报警,是不被允许的操作。
考虑了所有状态转移后就可以进行状态计算了。
状态表示: f ( i , 0 ) f(i,0) f(i,0):不选择打劫店铺 i i i; f ( i , 1 ) f(i,1) f(i,1):选择打劫店铺 i i i。
状态机中的
路径1:f[i][0] = f[i - 1][1]
;
路径2:f[i][1] = f[i - 1][0] + worth[i]
;
路径3:f[i][0] = f[i - 1][0]
;
决策:max
。
C++代码
#include <iostream>
using namespace std;const int N = 1e5 + 10;int w[N], f[N][2];
int n, T;int main(){ios :: sync_with_stdio(false);cin >> T;while(T --){cin >> n;for(int i = 1;i <= n;i ++){cin >> w[i];f[i][0] = max(f[i - 1][0], f[i - 1][1]); //0:不选这个店铺,前面的0、1状态都可以转换过来f[i][1] = f[i - 1][0] + w[i]; //1:选择这个店铺,只能在前面的0基础上转换过来}cout << max(f[n][0], f[n][1]) << endl;}return 0;
}
大盗阿福(打家劫舍)相关推荐
- 【OJ8462】大盗阿福
大盗阿福 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每 ...
- 刷题周记(八)——#区间DP:多边形、清空字符串 #状态机:股票买卖I~V、大盗阿福
文章目录 --2020年12月13日(周日)------------------ #区间DP 一.多边形 --2020年12月14日(周一)------------------ --2020年12月1 ...
- 大盗阿福(信息学奥赛一本通-T1301)
[题目描述] 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报 ...
- AcWing(状态机模型) 1049. 大盗阿福
题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 NNN 家店铺,每家店中都有一些现金. 阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的 ...
- 计蒜客 T1227 大盗阿福
阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 NN 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启 ...
- YTU 3144 动态规划进阶题目之大盗阿福
风华是一指流砂,苍老是一段年华. 题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗 ...
- (D8Q,当场抓获!!!)动态规划进阶题目之大盗阿福
题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系 ...
- |NOIOJ|动态规划|8462:大盗阿福
http://noi.openjudge.cn/ch0206/8462/ f[i] = max(f[i-1], f[i-2]+a[i]) f[i-1]表示不抢这家店,f[i-2]+a[i]表示抢这家店 ...
- 【动态规划】状态机模型
整理的算法模板合集: ACM模板 文章目录 A.抛砖引玉 - AcWing 1049. 大盗阿福 B.AcWing 1057. 股票买卖 IV C.AcWing 1058. 股票买卖 V D.AcWi ...
最新文章
- 自己设计大学排名-数据库实践
- 大家对协同管理软件是怎么理解的?协同管理软件最主要需要解决企业/组织什么问题?
- 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板 ( 2021年08月28日最新解决方案 )
- python鱼眼图像识别_一种融合鱼眼图像与深度图像的动态环境视觉里程计方法与流程...
- 面试(后台开发,转载)
- 管理信息系统属于计算机的什么应用领域,全国2013自考《管理系统中计算机应用》...
- 【转】xPath语法介绍
- js+css 使div背景图在ie6中透明
- 苹果春季发布会已开启直播;滴滴回应网约车司机被害​;微软Chromium内核浏览器曝光 | 极客头条...
- thinkphp 同时更新多条数据
- eclipse中文语言包 离线安装
- 这篇文章说说特征工程(反欺诈与征信变量)
- python求圆锥体的表面积公式_圆锥表面积公式推导-圆锥表面积的计算公式
- 新浪开发平台实现分享
- Excel怎么批量插入对应产品图片?
- CSS 按钮悬停效果
- postman接口测试中文汉化教程
- oracle数据库ORA-报错大全
- Android定位方式和测试方法,定位方式(d16)
- c语言输入函数 scanf 详解 - 解决常见输入问题