题目描述

阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。

这条街上一共有 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;
}

大盗阿福(打家劫舍)相关推荐

  1. 【OJ8462】大盗阿福

    大盗阿福 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每 ...

  2. 刷题周记(八)——#区间DP:多边形、清空字符串 #状态机:股票买卖I~V、大盗阿福

    文章目录 --2020年12月13日(周日)------------------ #区间DP 一.多边形 --2020年12月14日(周一)------------------ --2020年12月1 ...

  3. 大盗阿福(信息学奥赛一本通-T1301)

    [题目描述] 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报 ...

  4. AcWing(状态机模型) 1049. 大盗阿福

    题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 NNN 家店铺,每家店中都有一些现金. 阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的 ...

  5. 计蒜客 T1227 大盗阿福

    阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 NN 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启 ...

  6. YTU 3144 动态规划进阶题目之大盗阿福

    风华是一指流砂,苍老是一段年华. 题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗 ...

  7. (D8Q,当场抓获!!!)动态规划进阶题目之大盗阿福

    题目描述 阿福是一名经验丰富的大盗.趁着月黑风高,阿福打算今晚洗劫一条街上的店铺. 这条街上一共有 N 家店铺,每家店中都有一些现金.阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系 ...

  8. |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]表示抢这家店 ...

  9. 【动态规划】状态机模型

    整理的算法模板合集: ACM模板 文章目录 A.抛砖引玉 - AcWing 1049. 大盗阿福 B.AcWing 1057. 股票买卖 IV C.AcWing 1058. 股票买卖 V D.AcWi ...

最新文章

  1. 自己设计大学排名-数据库实践
  2. 大家对协同管理软件是怎么理解的?协同管理软件最主要需要解决企业/组织什么问题?
  3. 【错误记录】Android Studio 的 Flutter 代码界面没有 Logcat 面板 ( 2021年08月28日最新解决方案 )
  4. python鱼眼图像识别_一种融合鱼眼图像与深度图像的动态环境视觉里程计方法与流程...
  5. 面试(后台开发,转载)
  6. 管理信息系统属于计算机的什么应用领域,全国2013自考《管理系统中计算机应用》...
  7. 【转】xPath语法介绍
  8. js+css 使div背景图在ie6中透明
  9. 苹果春季发布会已开启直播;滴滴回应网约车司机被害​;微软Chromium内核浏览器曝光 | 极客头条...
  10. thinkphp 同时更新多条数据
  11. eclipse中文语言包 离线安装
  12. 这篇文章说说特征工程(反欺诈与征信变量)
  13. python求圆锥体的表面积公式_圆锥表面积公式推导-圆锥表面积的计算公式
  14. 新浪开发平台实现分享
  15. Excel怎么批量插入对应产品图片?
  16. CSS 按钮悬停效果
  17. postman接口测试中文汉化教程
  18. oracle数据库ORA-报错大全
  19. Android定位方式和测试方法,定位方式(d16)
  20. c语言输入函数 scanf 详解 - 解决常见输入问题

热门文章

  1. 联合证券|内外利好共振 今年A股可更乐观一点
  2. U-Boot参数设置
  3. ECharts统计图使用
  4. 2020计算机保研经历
  5. 计算机硬件组装什,计算机硬件组装的步骤详解
  6. next. js_Next.js添加到您的应用程序中的图标
  7. ElasticSearch java API - 聚合查询-聚合多字段聚合demo
  8. php手动起事物和自动的区别,手动挡和自动挡哪个好 有什么区别
  9. Musixtex写五线谱
  10. mysql容器保存为镜像实战操作(拷贝方法)