957. N 天后的牢房

8 间牢房排成一排,每间牢房不是有人住就是空着。

每天,无论牢房是被占用或空置,都会根据以下规则进行更改:

  • 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用。
  • 否则,它就会被空置。

(请注意,由于监狱中的牢房排成一行,所以行中的第一个和最后一个房间无法有两个相邻的房间。)

我们用以下方式描述监狱的当前状态:如果第 i 间牢房被占用,则 cell[i]==1,否则 cell[i]==0

根据监狱的初始状态,在 N 天后返回监狱的状况(和上述 N 种变化)。

 

示例 1:

输入:cells = [0,1,0,1,1,0,0,1], N = 7
输出:[0,0,1,1,0,0,0,0]
解释:
下表概述了监狱每天的状况:
Day 0: [0, 1, 0, 1, 1, 0, 0, 1]
Day 1: [0, 1, 1, 0, 0, 0, 0, 0]
Day 2: [0, 0, 0, 0, 1, 1, 1, 0]
Day 3: [0, 1, 1, 0, 0, 1, 0, 0]
Day 4: [0, 0, 0, 0, 0, 1, 0, 0]
Day 5: [0, 1, 1, 1, 0, 1, 0, 0]
Day 6: [0, 0, 1, 0, 1, 1, 0, 0]
Day 7: [0, 0, 1, 1, 0, 0, 0, 0]

示例 2:

输入:cells = [1,0,0,1,0,0,1,0], N = 1000000000
输出:[0,0,1,1,1,1,1,0]

 

提示:

  1. cells.length == 8
  2. cells[i] 的值为 01 
  3. 1 <= N <= 10^9
涵哥为了做游戏开发,经常会体验一些其他游戏。 在一款名叫《破坏之王》的游戏中,存在防卫者和破坏王两大阵营,破坏王阵营的目的是在破坏之神 的指挥下对防卫者发起进攻,而防卫者则需要抵挡破坏王的进攻。每个破坏王都具有一定的攻击力,若 干个破坏王之可以相互配合,产生的总攻击力为每个破坏王攻击力之和的平方。 这次,涵哥在游戏中扮演防卫者,他逮捕了n 个破坏王,第i 个破坏王的攻击力为ai。涵哥需要将 这n 个破坏王关押进m 牢房里,每牢房中最多可以关押2 个破坏王。 根据游戏设定,一牢房要承受的攻击力为牢房内所有破坏王的攻击力之和的平方,也就是说: • 如果一牢房内有1 个攻击力为x 的破坏王,那么这牢房要承受的攻击力为x2 • 如果一牢房内有2 个攻击力分别为x, y 的破坏王,那么这牢房要承受的攻击力为(x + y)2 涵哥想知道,如果他用最合理的方式关押这n 个破坏王,那么所有牢房要承受的攻击力之和的最小 值是多少。 输入 第一行输入2 个整数n,m 表示破坏王的数量和牢房的数量。 第二行输入n 个整数a1, a2, ..., an 表示每个破坏王的攻击力。 数据范围:1 ≤ n ≤ 1000, ≤ m ≤ n, 1 ≤ ai ≤ 1000. 输出 输出1 个整数,表示所有牢房要承受的攻击力之和的最小值。 样例输入Copy 6 4 2 4 1 3 6 5 样例输出Copy 111
最新发布
10-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值