上海市计算机学会竞赛平台2023年11月月赛丙组推箱子

题目描述

小爱正在体验一款推箱子游戏。游戏每一关由长度为𝑛n的字符“_”“_”(空格)和“@”“@”(箱子)组成初始状态,让当前所有箱子集中到一块即可过关。
在一个动作中,如果目标移动的位置存在并且是空的,你可以将任何箱子向左移动一个位置或向右移动一个位置。当前所有箱子一排好,即任意两个箱子之间都不存在空格,方可进入下一关。
此款游戏共有𝑡t关,确定通过每一关卡所需的最小移动次数。

输入格式

第一行:一个整数𝑡t,表示𝑡t个关卡。
接下来是2𝑡2t行表示每一关初始情况。
一个整数𝑛n, 表示当前可用位置情况
一个长度为𝑛n的字符串,只包含“_”(空格)和(空格)和“@”$(箱子)

输出格式

输出共𝑡t行,每一行表示通过每一关卡所需的最小移动次数。

数据范围
  • 对于 30%30%的数据,1≤𝑡≤10,1≤∑𝑛𝑖≤1031≤t≤10,1≤∑ni​≤103。
  • 对于 60%60%的数据,1≤𝑡≤103,1≤∑𝑛𝑖≤5∗1051≤t≤103,1≤∑ni​≤5∗105。
  • 对于 100%100%的数据,1≤𝑡≤104,1≤∑𝑛𝑖≤1061≤t≤104,1≤∑ni​≤106。
样例数据

输入:

3
6
@@_@__
3
_@_
10
@_@___@_@@

输出:

1
0
9

说明:

@@@___ (最右边箱子向左移动1个单位)
_@_ (移动0次)
3 + 4 + 1 + 1 = 9 。左边第2个箱子向右移动3个单位、最左边箱子向右移动4个单位、 右边第2个箱子向左移动1个单位、最右边箱子向左移动1个单位

详见代码:

#include <bits/stdc++.h>
using namespace std;
int t,n;
int main()
{cin>>t;while(t--){string s;int len;cin>>len>>s;vector<int> z(len);vector<int> y(len);for(int i=1;i<len;i++){if (s[i-1]=='@'){z[i]=z[i-1]+1;}else{z[i]=z[i-1];}}for(int i=len-2;i>=0;i--){if (s[i+1]=='@'){y[i]=y[i+1]+1;}else{y[i]=y[i+1];}}long long ans=0;for(int i=0;i<len;i++){if (s[i]=='_'){ans+=min(z[i],y[i]);}}cout<<ans<<endl;}return 0;
}

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

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

相关文章

查找——顺序查找和折半查找

查找 关于顺序查找和折半查找&#xff0c;可点击此处进入旧金山大学提供的动画演示网站。 顺序查找 ​ 顺序查找又称线性查找。它对于顺序表和链表都是适用的。对于顺序表&#xff0c;可通过数组下标递增来顺序扫描每个元素&#xff1b;对于链表&#xff0c;则通过指针next来…

Apache Doris 基础 -- 部分数据类型及操作

您还可以使用SHOW DATA TYPES;查看Doris支持的所有数据类型。 部分类型如下&#xff1a; Type nameNumber of bytesDescriptionSTRING/可变长度字符串&#xff0c;默认支持1048576字节(1Mb)&#xff0c;最大精度限制为2147483643字节(2gb)。大小可以通过BE配置string_type_le…

点云传统算法

1 滤波&#xff0c;过滤噪点&#xff0c;下采样 统计滤波&#xff1a; voxel&#xff0c; 半径搜索&#xff1a; # 基于体素网格化的滤波器 voxel_down_pcd cloud.voxel_down_sample(voxel_size0.5)# 基于半径搜索的滤波器 cl, ind cloud.remove_statistical_outlier(nb_ne…

java问题解决: IDEA java 警告 源发行版 17 需要目标发行版 17

效果图 问题原因 jdk和你实际安装的jdk不匹配 解决问题 1.点击File -->Project Structure–>Project 修改这两处 2. 在Project Structure–>Modules中的红框位置都要调整对应版本 3、点击File–>settings–>java compile将对应框的版本修改成对应版本即可–改…

按键精灵的每隔10秒点击屏幕中央的代码

要在按键精灵中设置每隔10秒点击屏幕中央的代码&#xff0c;你可以参考以下步骤和代码&#xff1a; 步骤 确定坐标&#xff1a;首先&#xff0c;你需要确定屏幕中央大门的精确坐标。你可以使用按键精灵的“抓抓”工具来获取这些坐标。 编写脚本&#xff1a;在按键精灵中创建一…

Cocos Creator,Youtube 小游戏!

YouTube 官方前段时间发布了一则重磅通知&#xff0c;宣布平台旗下小游戏功能 Youtube Playables 正式登录全平台&#xff08;安卓、iOS、网页&#xff09;&#xff0c;并内置了数十款精选小游戏。 Youtube Playables 入口&#xff1a; https://www.youtube.com/playables Coco…

筛斗数据:如何利用数据提取技术提高能源利用效率

在当前的数字时代&#xff0c;数据提取技术已成为推动能源利用效率提升的重要工具。随着技术的进步和数据分析方法的创新&#xff0c;我们现在能够更精确地监测、分析和优化能源使用&#xff0c;从而实现节能减排和经济效益的双重目标。以下是几种关键的方法来展示如何利用数据…

正则的介绍

一、正则 是一种用来描述、匹配和操作字符串的工具。它由一系列字符组成的模式构成&#xff0c;可以用来检索、替换、提取或验证文本数据。 二、正则表达式 由普通字符和特殊字符组成&#xff0c;通过定义匹配规则来实现对字符串的处理 三、正则表达式的基本语法规范 字符匹…

苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?

2024年6月5日&#xff0c;苹果WWDC 2024全球开发者大会如约而至&#xff0c;带来了众多令人兴奋的新功能和新产品。其中&#xff0c;AI 技术的全面融入无疑是最引人注目的亮点。从 iOS、iPadOS 到 macOS&#xff0c;再到 Siri 和开发者工具&#xff0c;苹果正在将 AI 融入到其生…

一位优秀程序员的近距离观察

### 专注与创新精神  对于程序员来说&#xff0c;专注和创新精神是最为重要的职业素养。首先&#xff0c;程序员需要全身心地投入到编程工作中&#xff0c;持续不断地学习和提高自己的技能&#xff0c;这不仅需要投入大量的时间和精力&#xff0c;还需要坚韧不拔的决心和毅力…

ubuntu20.04桌面蓝屏问题解决

前些天做仿真项目&#xff0c;遇到了ubuntu蓝屏问题&#xff0c;于是想着找几个参考办法修复&#xff0c;但不管用&#xff0c;疑似是重要组件损坏。 损坏的原因是强制关机&#xff0c;但究竟是强制关了哪一个卡死的进程&#xff0c;不得而知&#xff0c;我有一个关不掉的仿真…

PostgreSQL 数据类型详细说明

PostgreSQL 提供了多种数据类型&#xff0c;每种数据类型都有其特定的应用场景、数据类型范围以及使用禁忌。以下是一些常见的数据类型及其相关信息&#xff1a; 数值类型&#xff1a; SMALLINT: 范围是 -32768 到 32767。适用于小范围的整数数据&#xff0c;如年龄、数量。INT…

CSS语言笔记

Cascading Style Sheets(级联样式表) CSS是一种样式表语言&#xff0c;用于HTML文档的控制外观&#xff0c;定义布局。 HTML与CSS关系&#xff1a; HTML是网页内容 CSS是网页样式 <!DOCTYPE html> <html><head><meta charset"utf-8">&l…

万事开头难——Java实现俄罗斯小方块【第一步】

目录 技术实现&#xff1a; 1.初始化游戏窗口&#xff1b; 1.1 什么是窗口&#xff1a; 1.2 Swing 1.3 JFrame创建窗口&#xff1a; 1.3.1创建窗口的逻辑 1.3.2.设置简单的页面 1.3.3.优化 1.3.4.设置标题 1.4 创建游戏窗口 技术实现&#xff1a; 1.初始化游戏窗口&am…

基于android开发平台的聊天软件实现(论文+源码)_kaic

摘要&#xff1a;互联网时代的到来使得手机通讯变得更为普及和强大&#xff0c;人们可以随时随地地进行交流。由于工作的繁忙以及生活节奏的加快&#xff0c;人们无法有更多时间展开面对面的交谈&#xff0c;导致在线聊天软件的使用更加频繁&#xff0c;所以本文尝试设计了一款…

Node入门以及express创建项目

前言 记录学习NodeJS 一、NodeJS是什么&#xff1f; Node.js 是一个开源和跨平台的 JavaScript 运行时环境 二、下载NodeJs 1.下载地址(一直点击next即可&#xff0c;记得修改安装地址) https://nodejs.p2hp.com/download/ 2.查看是否安装成功&#xff0c;打开命令行 nod…

css入门宝典

3.1.4 通配符选择器 语法 : *{} 作用 : 让页面中所有的标签执行该样式,通常用来清除间距 例子 : *{ margin: 0; //外间距 padding: 0; //内间距 } 一 CSS基本语法 1基础知识 1.1概述 Css (层叠样式表)是种格式化网页的标准方式&#xff0c; 用于控制设置网页的样式&#xff…

【INTEL(ALTERA)】编程了错误的加密密钥后,为什么 Agilex™ 7 设备无法恢复?

目录 说明 解决方法 说明 如果您意外地对加密密钥编程错误&#xff0c;Agilex™ 7 设备将无法恢复。这是此设备的预期行为。 解决方法 此错误没有恢复流程。使用 Agilex™ 7 设计安全功能时&#xff0c;请注意加密密钥并仔细编程。

windows系统,家庭自用NAS。本地局域网 Docker安装nextcloud

windows系统&#xff0c;家庭自用NAS。本地局域网 Docker安装nextcloud 1、docker安装 太简单了&#xff0c;直接去搜一搜。 docker-compose 相关命令 docker-compose down docker compose up -d2、还是使用老的 在你需要挂载的目录下&#xff0c;新建一个文件&#xff0c;…

Linux在创建用户的时候遇到的错误:useradd: Permission denied.useradd:无法锁定 /etc/passwd,请稍后再试。

针对以下这个问题主要时权限问题 1.当我们输入useradd (创建的用户名&#xff0c;一般用英文) -m -s /bin/bash命令创建用户时&#xff0c;不是root用用户就会报错 [yllocalhost /]$ useradd hsyl -m -s /bin/bash useradd: Permission denied. useradd&#xff1a;无法锁定 …