ACWing: 1049 大盗阿福

#暴力bfs:

"""
题目描述
阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。
这条街上一共有 N家店铺,每家店中都有一些现金。
阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。
作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。
他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?输入格式
输入的第一行是一个整数 T
,表示一共有 T组数据。接下来的每组数据,第一行是一个整数 N,表示一共有 N家店铺。第二行是 N个被空格分开的正整数,表示每一家店铺中的现金数量。
每家店铺中的现金数量均不超过1000。输出格式
对于每组数据,输出一行。
该行包含一个整数,表示阿福在不惊动警察的情况下可以得到的现金数量。
""
N = int(1e5+10) #创造接收的数组 记忆化
home = [0 for i in range(N)] #存放对应的数据
T = eval(input())
#x 表示正在考虑的那家店
def dfs(x):global nif x > n:return 0 #返回价值0else:return  max(dfs(x+1),dfs(x+2)+home[x]) 
#返回最大价值 第一个是不选的时候 第二个是选的时候 并加上home[x]时的价值for i in range(T):n = eval(input())a = [0] + list(map(int,input().split())) #接收对应的一行数据,我使用数组进行接收for i in range(1,n+1): #为了一一对应的,我就再在数组前面加上了[0]home[i] = a[i]res = dfs(1)print(res)

#记忆化数组优化暴力bfs

N = int(1e5+10)
home = [0 for i in range(N)]
#要是想实现记忆化搜索的话,那么dfs的参数要尽可能的少,不应该把没有影响到边界的数 放进来
#想要进行剪枝,是不是就炫耀尽可能的把剪枝的数删去
T = eval(input())
#x 表示正在考虑的那家店
def dfs(x):cnt = 0if mem[x]:return mem[x]if x > n:cnt = 0else:cnt = max(dfs(x+1),dfs(x+2)+home[x])mem[x] = cntreturn cntfor i in range(T):n = eval(input())mem = [0 for x in range(N)] #每次都重新设置一下记忆化数组,不能再用上一组数据的答案a = [0] + list(map(int,input().split()))for i in range(1,n+1):home[i] = a[i]res = dfs(1)print(res)

剪枝的操作其实类似于for循环中的break操作

dp递推:

N = int(1e5+10)
home = [0 for i in range(N)]
T = eval(input())
f = [0 for i in range(N)]
for i in range(T):n = eval(input())a = [0] + list(map(int,input().split()))for i in range(1,n+1):home[i] = a[i]mem = [0 for x in range(N)]  # 每次都重新设置一下记忆化数组for j in range(n,0,-1):f[j] = max(f[j+1],f[j+2]+home[j])print(f[1])
#倒叙输出 递推 从底部一步一步往上推

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794296.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis -- 缓存雪崩问题

缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机,导致大量请求到达数据库,带来巨大压力。 可能原因 : 同一时间大量的key到期 ; 解决方案: 给不同的Key的TTL添加随机值 利用Redis集群提高服务的可用性 给缓存业务添加降…

渗透测试靶机----Raven-1

渗透测试靶机----Raven-1 开启靶机,登录窗,平平无奇 开扫: 先看看ip 这里发现192.168.217.166 发现相关服务端口,这里看到80,还是老样子,先80入手打开发现一个熟悉的站点: 这里可以使用漏扫工具…

Python你想要修改文件内容的同时保留原文件的元数据(如创建时间、修改时间等)

在Python中,如果你想要修改文件内容的同时保留原文件的元数据(如创建时间、修改时间等),你需要先读取原文件的内容,然后创建一个新的文件写入修改后的内容,同时复制原文件的元数据到新文件上。然而&#xf…

ES学习日记(五)-------插件head安装

接上回,必要的git和node已经装完了,现在开始装head 回到es集群项目里找到plugins(插件文件夹下), 存在安装在plugins启动es报错的情况,报错信息如图一,解决方案就是换个目录,不要放在plugin目录下 git clone https://github.com/mobz/elasticsearch-head.git 打开远程登陆,默…

装饰器深入剖析

装饰器核心 概念 装饰器来自 Decorator 的直译。什么叫装饰,就是装点、提供一些额外的功能。在 python 中的装饰器则是提供了一些额外的功能。 装饰器本质上是一个Python函数(其实就是闭包),它可以让其他函数在不需要做任何代码…

【动手学深度学习】深入浅出深度学习之RMSProp算法的设计与实现

目录 🌞一、实验目的 🌞二、实验准备 🌞三、实验内容 🌼1. 认识RMSProp算法 🌼2. 在optimizer_compare_naive.py中加入RMSProp 🌼3. 在optimizer_compare_mnist.py中加入RMSProp 🌼4. 问…

atoi()函数---使用和模拟实现(详解)

目录 一、前言二、声明三、描述四、参数五、返回值六、使用七、模拟实现 一、前言 二、声明 int atoi(const char *str)三、描述 C 库函数 int atoi(const char *str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)需要包含头文件&#xff…

大语言模型基石:文字与数字的起源与演变

大语言模型基石:文字与数字的起源与演变 1、文字 1.1、起源 我们的祖先在还没有发明文字和语言之前就已经开始使用“咿咿呀呀”的声音来传播信息了,比如在野外活动遇到危险,然后发出“咿咿呀呀”的声音来提醒同伴小心,同伴在接收…

考古:IT架构演进之IOE架构

考古:IT架构演进之IOE架构 IOE架构(IBM, Oracle, EMC)出现在20世纪末至21世纪初,是一种典型的集中式架构体系。在这个阶段,企业的关键业务系统往往依赖于IBM的小型机(后来还包括大型机)、Oracle…

基于SpringBoot+Vue的儿童书法机构管理系统

一、项目背景介绍: 儿童书法机构的管理是一个具有挑战性的任务,需要有效的信息管理和资源分配。传统的手动管理方式存在着效率低下、易出错等问题。为了解决这些问题,基于SpringBootVue的儿童书法机构管理系统应运而生。该系统利用现代化的技…

Linux--进程(2)

目录 前言 1. 进程的状态 1.1 进程排队 1.2 运行,阻塞,挂起 2.Linux下具体的进程状态 2.1僵尸和孤儿 3.进程的优先级 4.Linux的调度与切换 前言 这篇继续来学习进程的其它知识 上篇文章:Linux--进程(1)-CS…

ES12 学习

文章目录 1. 逻辑赋值操作符2. 数字分隔符_3. replaceAll4. Promise.any5. WeakRefs6. FinalizationRegistry 1. 逻辑赋值操作符 逻辑赋值操作符 ??、&&、|| let a true let b true a && b // a a && b a || b // a a || b obj.introduction ?…

37.ABA问题

变量初始值为A,修改成B,通过AtomicReference的compareAndSet去改变。就会先比较原来的值是否为A,如果为A则修改成功,否则修改失败。 但是如果在这个过程中,A变成D然后又变成A, 那么再调用compareAndSet去改变也能修改成功B。这个…

Redis -- 缓存击穿问题

缓存击穿问题也叫热点Key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。 常见的解决方案有两种: 互斥锁 逻辑过期 逻辑分析:假设线程1在查询缓存之后&…

【Leetcode 347】,前k个高频元素,小根堆的调整

参考题解 题目:给定一个数组,输出 前k个高频元素。 思路: 遍历数组,建立小根堆(小根堆的元素是元组(num,freq),排序规则是每个元素的频率)。 下面使用数组‘heap’&…

静态路由协议实验1

要求: 使用静态路由协议使得全网可达。 第一步、规划IP地址。并配置IP。 第二步、写静态路由 [r1]ip route-static 192.168.3.0 24 192.168.2.2 [r1]ip route-static 192.168.4.0 24 192.168.2.2 [r1]ip route-static 192.168.5.0 24 192.168.2.2[r2]ip route-st…

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录

一、next-auth 身份验证凭据-使用电子邮件和密码注册登录 文章目录 一、next-auth 身份验证凭据-使用电子邮件和密码注册登录一、前言二、前置准备1、环境配置2、相关库安装(1)vercel 配置(2)Yarn 包管理配置 3、next项目初始化与…

【Oracle】oracle、mysql、sql server三者区别

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Oracle》系列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识…

并查集(基础+带权以及可撤销并查集后期更新)

并查集 并查集是一种图形数据结构,用于存储图中结点的连通关系。 每个结点有一个父亲,可以理解为“一只伸出去的手”,会指向另一个点,初始时指向自己。一个点的根节点是该点的父亲的父亲的..的父亲,直到某个点的父亲…

Shell脚本之基础-2

目录 一、字符处理 cut命令 awk命令 sed命令 字符串排序 二、条件判断 文件类型判断 文件权限判断 两个文件的判断 整数比较 字符串判断 多重判断 三、流程控制 if分支 if else 双分支结构 case分支 for循环 while循环 一、字符处理 cut命令 命令格式&#x…