站外题求助
  • 板块灌水区
  • 楼主dingjunwei
  • 当前回复3
  • 已保存回复3
  • 发布时间2023/12/16 10:18
  • 上次更新2023/12/16 10:26:40
查看原帖
站外题求助
756727
dingjunwei楼主2023/12/16 10:18

农夫约翰有N个排成一行的奶牛(1≤N≤300000)。不幸的是,有一种疾病正在蔓延。 最初,一些奶牛开始被感染。每天晚上,受感染的奶牛都会将疾病传播给左右两侧的奶牛(如果存在的话)。一旦奶牛被感染,它就会继续被感染。 经过几个晚上,农夫约翰意识到问题已经失控,所以他对奶牛进行了测试,以确定谁生病了。找出可能开始患病的奶牛的最小数量。 输入:第一行包含N,农夫约翰的奶牛数量。 下一行包含一个N位,只有0和1的字符位字符串,其中1表示受感染的奶牛和0表示经过一些夜晚后未受感染的奶牛。 输出格式(管道标准输出): 输出一个整数:可能开始生病的奶牛的最小数量。 样本输入: 5. 11111 样本输出: 1. 假设中间的奶牛是唯一一头开始被感染的奶牛。然后奶牛会按照以下顺序被感染: 0晚:00100(第三头奶牛最初被感染) 1晚:->01110(第二头和第四头奶牛现在被感染) 2晚:->11111(第一头和第五头奶牛现在被感染) 3晚:->11111(所有奶牛都已被感染,因此没有其他奶牛被感染) ->。。。 在两个或多个晚上之后,奶牛的最终状态看起来就像输入。还有许多其他初始状态和夜晚数可能会产生输入状态,例如: 0晚:10001 1晚:->11011 2晚:->11111 或者: 0晚:01001 1晚:->11111 或者: 0晚:01000 1晚:->11100 2晚:->11110 3晚:->11111 所有这些初始状态都包含至少一头受感染的奶牛。 样本输入: 6. 011101 样本输出: 4.

2023/12/16 10:18
加载中...