C. Mortal Kombat Tower(DP)

news2025/2/26 19:37:42

Problem - 1418C - Codeforces

题意:

你和你的朋友正在玩《真人快打11》这个游戏。你们正试图通过一个挑战塔。这个塔里有n个老板,编号从1到n,第i个老板的类型是ai。如果第i个boss是简单的,那么它的类型是ai=0,否则这个boss是困难的,其类型是ai=1。

在一个会话中,你或你的朋友可以杀死一个或两个老板(你和你的朋友都不能跳过这个会话,所以在一个会话中杀死的老板的最低数量是至少一个)。在你的朋友环节之后,你的环节开始,然后你的朋友环节再次开始,你的环节开始,以此类推。第一个环节是你朋友的环节。

你的朋友需要变得很好,因为他实际上无法杀死困难的老板。为了杀死他们,他使用跳过点。一个跳过点可以用来杀死一个困难的老板。

你的任务是找出你的朋友需要使用的最少的跳过点,以便你和你的朋友按照给定的顺序杀死所有n个老板。

例如:假设n=8,a=[1,0,1,1,0,1,1]。那么最好的行动方案是如下。

你的朋友杀了两个第一个老板,对第一个老板使用一个跳点。
你杀了第三个和第四个老板。
你的朋友杀了第五个老板。
你杀了第六个和第七个老板。
你的朋友杀死了最后一个老板,使用了一个跳过点,所以用两个跳过点完成了塔。
你必须回答t个独立的测试案例。

输入
输入的第一行包含一个整数t(1≤t≤2⋅104)--测试案例的数量。接着是t个测试用例。

测试用例的第一行包含一个整数n(1≤n≤2⋅105)--老板的数量。测试用例的第二行包含n个整数a1,a2,...,an(0≤ai≤1),其中ai是第i个老板的类型。

保证n的总和不超过2⋅105(∑n≤2⋅105)。

输出
对于每个测试案例,打印答案:你的朋友需要使用的最小跳过点数,以便你和你的朋友按照给定的顺序杀死所有n个老板。

例子
input
6
8
1 0 1 1 0 1 1 1
5
1 1 1 1 0
7
1 1 1 1 0 0 1
6
1 1 1 1 1 1
1
1
1
0
输出
2
2
2
2
1
0
题解:
对于第i个boss只有两种状态,一种是我杀(1),一直是朋友杀(0)

dp[N][2]

首先初始一下状态

因为朋友先开始杀

dp[1][0] = a[1]

第二个可能是我杀可能是他杀

dp[2][0] = a[1] + a[2]

dp[2][1] = dp[1][0](如果是我杀,无论当前是1还是0,是不需要代价的)

然后就是转移方程

dp[i][1] = min(dp[i-1][0],dp[i-2][0]) (我杀是不需要代价,从朋友转移)

dp[i][0] = min(dp[i-1][1]+a[i],dp[i-2][1]+a[i]+a[i-1])(朋友杀需要代价,从我转移)

#include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<vector>
#include<cstring>
using namespace std;
int dp[200050][2];
int a[200050];
void solve()
{
	memset(dp,0x3f,sizeof dp);
	int n;
	cin >> n;
	for(int i = 1;i <= n;i++)
	cin >> a[i];
	dp[1][0] = a[1];
	dp[2][0] = a[1] + a[2];
	dp[2][1] = dp[1][0];
	for(int i = 3;i <= n;i++)
	{
		dp[i][0] = min(dp[i-1][1]+a[i],dp[i-2][1]+a[i]+a[i-1]);
		dp[i][1] = min(dp[i-1][0],dp[i-2][0]);
	}
	cout<<min(dp[n][0],dp[n][1])<<"\n";
}
int main()
{
	int t = 1;
	cin >> t;
	while(t--)
	{
		solve();
	}
}
//
//

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

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

相关文章

HarmonyOS鸿蒙学习笔记(15)Swiper实现抖音切换视频播放效果

Swiper实战1、项目结构2、PageVideo和PlayView简单说明2.1 State变量的使用2.2 Link和Watch变量的使用2.3、Swiper的使用和PlayView的初始化2.4、页面可见状态发生改变时对视频进行暂停和播放2.5 PlayView和PageVidew源码&#xff1a;参考资料&#xff1a;1、项目结构 前面写了…

22服务-ReadDataByIdentifier

诊断协议那些事儿 诊断协议那些事儿专栏系列文章&#xff0c;本文介绍数据传输服务下的22服务ReadDataByIdentifier&#xff0c;允许客户端通过一个或多个dataldentifier向标识的服务器请求dataRecord&#xff08;数据记录值&#xff09;。 文章目录诊断协议那些事儿一、22服…

技术宅星云的Mac系统使用经验分享

技术宅星云的Mac系统使用经验分享系统维护1.1 Mac OSX 卡顿严重1.2 开启/禁止.DS_store文件生成1.3 显示/隐藏 系统文件夹系统维护 这篇博文分享使用Mac 系统中的一些优化经验。 1.1 Mac OSX 卡顿严重 今天不知道怎么回事&#xff0c;系统突然卡得不要不要的&#xff0c;各种…

Airtest新手升级:一个相对完整的纯.py脚本是怎样子的

1. 前言 一直以来&#xff0c;Airtest的教程都倾向于编写 .air 脚本&#xff0c;但本质上&#xff0c;它还是python脚本来的。今天我们就来补上这个缺口&#xff0c;一起来看下一个相对完整的纯 .py 脚本是什么样子的。 2. 例子一&#xff1a;纯py的Airtest脚本 有时候&…

Python-新建-Django项目-调试-显示mysql数据库表内容-HelloWorld

文章目录1.Pycharm-开发编辑器2.HelloWorld程序范例3.代码调试4.连接数据库-mysql4.1.安装好mysql数据库4.2.创建项目4.3.数据库表转模型4.4.前端展示5.总结1.Pycharm-开发编辑器 文件->新建项目->选择Django。接着在控制台输入命令&#xff1a; python -m django --ver…

【C语言】分支语句 循环语句 _训练题型加深理解

1.分支语句 自从学习编程以来每天都在写分支语句&#xff0c;那么什么是分支语句呢&#xff1f; 下面举两个生动的例子来更好的理解分支语句&#xff1a; 比如我们买东西&#xff0c;要么支付现金&#xff0c;要么使用微信或者支付宝。在大学如果你好好学习&#xff0c;校招…

SpringBoot简单使用MongoDB

SpringBoot简单使用MongoDB一、配置步骤1、application.yml2、pom3、entity4、mapper二、案例代码使用1、库前期准备上一篇安装MongoDB地址http://t.csdn.cn/G4oYJ 一、配置步骤 进入mongodb中创建数据库和用户 # &#xff08;1&#xff09;授权 # 我的管理员是root&#xf…

umi项目本地开发环境远程打开的问题

qiankun主应用加载子应用时&#xff0c;url指定了localhost const getEntry (base: string, port: number) > {const host: string location.hostnamereturn process.env.NODE_ENV development? http://${host}:${port}${base}: ${base}/index.html }而getEntry是用于q…

Cloud Keys Delphi Edition安全地存储

Cloud Keys Delphi Edition安全地存储 使用流行的基于云的密钥管理服务安全地管理密钥和机密。 云密钥可以轻松地将基于云的密钥和秘密管理与任何支持的平台或开发技术集成。这些易于使用的组件可用于与流行的云密钥管理提供商(如Amazon KMS、Amazon AWS Secrets、Azure key Va…

初识 Node.js 与内置模块:初识 Node.js及Node.js 环境的安装

回顾与思考 1. 已经掌握了哪些技术 2. 浏览器中的 JavaScript 的组成部分 3. 思考&#xff1a;为什么 JavaScript 可以在浏览器中被执行 4. 思考&#xff1a;为什么 JavaScript 可以操作 DOM 和 BOM 每个浏览器都内置了 DOM、BOM 这样的 API 函数&#xff0c;因此&#xff0c;…

【云原生之k8s】k8s资源限制以及探针检查

文章目录一、资源限制1、资源限制的使用2、reuqest资源&#xff08;请求&#xff09;和limit资源&#xff08;约束&#xff09;3、Pod和容器的资源请求和限制4、官方文档示例5、资源限制实操5.1 编写yaml资源配置清单5.2 释放内存&#xff08;node节点&#xff0c;以node01为例…

Moonbeam Illuminate/22线上生态盛会|Derek开场演讲

TL;DR Derek&#xff1a;Moonbeam是我认为最佳的实现Web3梦想的平台。一年中近300个项目已经部署在了Moonbeam生态&#xff0c;发展显著优于行业平均。Moonbeam正在构建被成为“Connected Contracts”的原生跨链方案。Moonbeam基金会新设立Moonbeam加速器&#xff0c;帮助Moon…

时间序列预测之为何舍弃LSTM而选择Informer?(Informer模型解读)

LSTM的劣势 Figure 1: (a) LSTF can cover an extended period than the short sequence predictions, making vital distinction in policy-planning and investment-protecting. (b) The prediction capacity of existing methods limits LSTF’s performance. E.g., startin…

Nginx快速入门及配置文件结构

Nginx快速入门教程Nginx 简介Nginx 特性Nginx 架构Nginx 相比Apache的优点Nginx 的安装启动、停止和重新加载 Nginx 配置Nginx 配置文件结构Nginx 工作流程总结后言Nginx 简介 Nginx是 HTTP 和反向代理服务器&#xff0c;邮件代理服务器&#xff0c;以及 Igor Sysoev 最初编写…

传统防火墙与Web应用程序防火墙(WAF)的区别

前言 由于WEB应用防火墙&#xff08;WAF&#xff09;的名字中有“防火墙”三个字&#xff0c;因此很多人都会将它与传统防火墙混淆。实际上&#xff0c;二者之间的有着很大的差别。传统防火墙专注在网络层面&#xff0c;提供IP、端口防护。而WAF是专门为保护基于Web的应用程序…

学生用白炽灯好还是led灯好?2022最专业学生护眼灯推荐

现阶段的学生视力都普遍出现近视低龄化&#xff0c;所以在护眼方面&#xff0c;家长都非常重视的&#xff0c;有人问&#xff1a;学生用白炽灯好还是led灯好&#xff1f; 我的回答是LED灯更适合现在家庭使用&#xff0c;给大家分析一下。 白炽灯是由灯丝发热产生光亮&#xff…

多层串联拼接网络

🍿*★,*:.☆欢迎您/$:*.★* 🍿 目录 背景 正文 总结 背景描述

Pytorch ——特征图的可视化

文章目录前言一、torchvision.models._utils.IntermediateLayerGetter*注意&#xff1a;torcvision的最新版本0.13&#xff0c;已经取消了pretrainedTrue这个参数&#xff0c;并且打算在0.15版正式移除&#xff0c;如果用pretrained这个参数会出现warring警告。现在加载与训练权…

【项目实战】springboot+vue舞蹈课程在线学习系统-java舞蹈课程学习打卡系统的设计与实现

注意&#xff1a;该项目只展示部分功能&#xff0c;如需了解&#xff0c;评论区咨询即可。 本文目录1.开发环境2 系统设计2.1 背景意义2.2 技术路线2.3 主要研究内容3 系统页面展示3.1 学生3.2 教师页面3.3 管理员页面4 更多推荐5 部分功能代码5.1 查看学生打卡5.2 文件上传下载…

天翼云实时云渲染,助力打造世界VR产业大会云上之城

2022年11月12日&#xff0c;2022世界VR产业大会于江西南昌开幕。11月13日&#xff0c;以“共建元宇宙生态&#xff0c;点亮新数智未来”为主题的中国电信生态论坛召开。由天翼云携手新国脉数字文化股份有限公司&#xff08;简称“国脉文化”&#xff09;打造的元宇宙家园国脉大…