A3084 | Drogon
来源官方 / 2024
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
时间限制:1000ms
空间限制:128mb
Yuilice拔出了魔剑,骑着心爱的骏马"托雷特"在幽影之地的平原上漫无目的奔驰着,一道巨大的黑影一瞬间笼罩了整片平原,Yuilice抬头一看。
一头巨大的黑龙正瞪着它硕大的眼珠凝视着Yuilice,嘴边的尖牙上下摩擦着。

(图片来源于网络)
巨龙自称为飞龙"尖牙",他已经许久没有见到人类了,于是他决定一口火烧掉Yuilice。但是Yuilice手里的魔剑亚托克斯让多雷特感到忌惮,于是他决定与Yuilice玩一个小游戏。
---
飞龙尖牙口吐魔术火焰,一团团火焰悬浮在了地面上散发着恐怖的热量。
这些火球如果放置不管,会发生巨大的爆炸,将Yuilice炸飞,但是如果能让他们并成一排,那么Yuilice就可以挥动魔剑亚托克斯把他们全部砍碎。
我们可以用一个长度为$n$的字符串来表示当时的情景,字符串由
.(空地)与*(火球)组成,Yuilice可以施展移动魔法将一个火球向左或者向右移动一格。只要所有火球排成一排,Yuilice就可以全部砍碎。注意!排成一排的定义被视为任何火球之间都不存在着空地!
例如,现在有着一个长度$n=6$的字符串,并且表示为
**.*..,那么可能出现以下场景:- 位于 $4$ 位置的火球向右移动,字符串的状态为
**..*.- 在 $2$ 位置的火球向右移动,字符串的状态为:
*.*.*.- 位于 $1$ 位置的火球向右移动,字符串的状态为:
.**.*.- 位于 $3$ 位置的火球向右移动,字符串的状态为
.*.**.- 在 $2$ 位置的火球向右移动,字符串的状态为:
..***.- 火球排为一列,Yuilice挥动魔剑砍碎火球,成功幸存。
现在Yuilice为了保存体力对付尖牙,需要使用最少次数的移动魔法保存体力,那么请问他最少需要使用几次移动魔法呢?
输入格式
第一行包含一个整数 $n$ ( $1 \le n \le 10^6$ )。
第二行包含一个长度为 $n$ 的字符串,由字符
第二行包含一个长度为 $n$ 的字符串,由字符
.(空地)和*(火球)组成--即字符串描述。输出格式
输出排成一排所需的最少移动次数。
输入输出样例
输入 #1
6 **.*..
输出 #1
1
输入 #2
10 *.*...*.**
输出 #2
9
输入 #3
3 .*.
输出 #3
0
输入 #4
3 ...
输出 #4
0
对于$40\%$的数据,$1 \leq n \leq 10^3$
对于$100\%$的数据,$1 \leq n \leq 10^6$
对于$100\%$的数据,$1 \leq n \leq 10^6$
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?