【梦想星际舰队】第二关 修复破损的宇航服【鱼币】
本帖最后由 zhangjinxuan 于 2023-6-6 08:57 编辑上一关传送门:第一关 脱离地球的障碍
第二关 修复破损的宇航服
终于,你们在最后的 10-114514 毫秒拯救了 zhangjinxuan,并把他拉回了梦想星际舰。
但是,你们发现,zhangjinxuan 虽然只是受了点伤,宇航服却破损的十分严重。
如果不修复,那么 zhangjinxuan 以后就无法执行出舱任务,为了之后的任务顺利进行,你能帮助 zhangjinxuan 修复破损的宇航服吗?
宇航服是一个由 0 和 1 组成的一个字符串,就像这样:
001010011110100101100011111
你现在得使用电脑打字的方式来修复这个宇航服,即打出这个宇航服对应的 01 串即可,越快越好!
这台电脑上有三个按键,分别是 0, Shift, 和 1 Lock,一开始, 1 Lock 为未激活的,你可以执行以下操作:
1. 使用 X 微秒时间按下 0 键,如果 1 Lock 是激活状态,那么就会打印 1,否则只会打印 0;
2. 使用 Y 微秒时间按下 Shift + 1 键,如果 1 Lock 是激活状态,那么屏幕上打印 0,否则只会打印 1;
3. 使用 Z 微秒时间按下 1 Lock 键,1 Lock 的激活状态取反,请注意,这不会打印任何字符。
这是不是很像 Caps Lock 和 Shift 的规则?好了,就是这个规则,现给定 X, Y, Z 和修复宇航服要打印的 01 串 S,请输出修复宇航服的最短用时(微妙)。
Sample 1
Input
1 3 3
1101
Output
9
Explain
以下操作序列使屏幕上的字符串等于中的 1101,用时9毫秒,这是最短的可能。
花费 Z(=3)毫秒按下 1 Lock 键。1 Lock 激活。
花费 X(=1)毫秒按下“0”键,打印 1。
花费 X(=1)毫秒来按下“0”键,打印 1。
花费 Y(=3)毫秒,以同时按下Shift键和“0”键,打印 0,因为 1 Lock 成激活状态,Shift 让 1 Lock 暂时成为未激活状态。
花费 X(=1)毫秒来按下“0”键。打印 1。
Input
1 2 4
001010011110100101100011111
Output
40
好了,现在请你编写解决这个问题的程序,请尽快完成任务!
本题非原创,改编于:https://atcoder.jp/contests/abc303/tasks/abc303_d。
本题尚未加入梦想 OJ。
参考答案
**** Hidden Message *****
选手答案
暂无,允许使用 gpt,但是必须注明思路。
下一关:第三关 运输物资
本帖最后由 sfqxx 于 2023-6-3 13:35 编辑
x, y, z = map(int, input().split())
s = input()
INF = (1 << 60)#2^60
dp = [ for j in range(len(s) + 1)]
dp = 0
dp = z
for i in range(len(s)):
if s == '1':
dp = min(dp + y, dp + z + y)#直接看帖子题解
dp = min(dp + z + x, dp + x)
else:
dp = min(dp + x, dp + z + x)
dp = min(dp + z + y, dp + y)
print(min(dp, dp))
思路: @高山 @sfqxx @元豪 @tommyyu @额外减小 @不二如是 {:10_256:} 求助帖?难道不是技术交流??? 陶远航 发表于 2023-6-3 09:56
求助帖?难道不是技术交流???
求助帖只是为了方便给那些回答问题的鱼油奖励而已。 链接打不开 sfqxx 发表于 2023-6-3 10:09
链接打不开
这个网站经常遭受黑客的攻击,可能会存在什么 502,504 等错误。 sfqxx 发表于 2023-6-3 10:09
链接打不开
这个网站经常受攻击,偶尔 502,504 很正常 唉,不会,看看题解{:10_269:} 同上,不会 来个入门题{:10_269:} zhangjinxuan 发表于 2023-6-3 10:16
这个网站经常受攻击,偶尔 502,504 很正常
原来如此 sfqxx 发表于 2023-6-3 13:05
来个入门题
no{:10_256:} zhangjinxuan 发表于 2023-6-3 13:10
no
555{:10_266:} zhangjinxuan 发表于 2023-6-3 13:10
no
抄抄代码{:10_256:} sfqxx 发表于 2023-6-3 13:12
抄抄代码
请注明你的思路,不然视为作弊。 本帖最后由 zhangjinxuan 于 2023-6-3 13:38 编辑
sfqxx 发表于 2023-6-3 13:32
思路:
不错不错{:10_256:}
为什么我们结果要取 min(dp, dp) 呢{:10_277:}
为什么这道题可以使用动态规划{:10_291:} zhangjinxuan 发表于 2023-6-3 13:35
不错不错
为什么我们要从 4 个状态去转移,我不是我说的 2 个状态呢,在这中间,有多少的转 ...
好问题{:10_265:}
我想想
因为这道题需要动态规划,所以要用动态规划{:10_256:} zhangjinxuan 发表于 2023-6-3 13:35
不错不错
为什么我们要从 4 个状态去转移,我不是我说的 2 个状态呢,在这中间,有多少的 ...
不影响AC,我暴力都可以解决 sfqxx 发表于 2023-6-3 13:36
好问题
我想想
你想一想,动态规划的基本条件是什么,这道题满足动态规划的基本条件吗{:10_277:}