博客
关于我
HDU 5600 N bulbs (BestCoder Round #67 (div.2))
阅读量:633 次
发布时间:2019-03-14

本文共 1033 字,大约阅读时间需要 3 分钟。

为了解决这个问题,我们需要判断熊孩子是否可以从第一个灯泡走到最后一个灯泡,并在过程中将所有灯泡关闭。每经过一个灯泡,熊孩子都会按下开关,改变灯泡的状态。

方法思路

  • 问题分析:熊孩子从第一个灯泡走到最后一个灯泡,每经过一个灯泡都会按下开关,改变灯泡的状态。我们需要确保每个灯泡被按下的次数使其最终关闭。
  • 关键观察:灯泡的状态会根据被按下的次数改变。如果一个灯泡被按下偶数次,状态不变;如果被按下奇数次,状态改变。我们需要确保所有灯泡都被按下偶数次。
  • 连续0段分析:如果一个连续的0段被覆盖奇数次,灯泡会被改变状态,无法保持关闭。因此,我们需要统计所有连续的0段中奇数长度的数量。如果奇数长度的数量是偶数,则可以通过折返法使所有灯泡关闭。
  • 解决代码

    t = int(input())for _ in range(t):    n = int(input())    s = input().strip()    current_zero = 0    count_odd = 0    for c in s:        if c == '0':            current_zero += 1        else:            if current_zero > 0:                if current_zero % 2 == 1:                    count_odd += 1                current_zero = 0    if current_zero > 0:        if current_zero % 2 == 1:            count_odd += 1    print("YES" if count_odd % 2 == 0 else "NO")

    代码解释

  • 读取输入:首先读取测试用例的数量t,然后循环处理每个测试用例。
  • 遍历灯泡状态:对于每个灯泡状态字符串,遍历每个字符,记录当前连续的0的长度和奇数长度段的数量。
  • 统计奇数长度段:每当遇到一个1时,检查当前连续的0的长度,如果为奇数,则增加奇数长度段的数量,并重置当前长度。
  • 处理最后一段:遍历结束后,检查最后一段连续的0的长度,并更新奇数长度段的数量。
  • 判断结果:根据奇数长度段的数量是否为偶数,输出"YES"或"NO"。
  • 这个方法确保了在O(n)时间复杂度内解决问题,适用于大规模输入。

    转载地址:http://bcxoz.baihongyu.com/

    你可能感兴趣的文章
    Object c将一个double值转换为时间格式
    查看>>
    object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
    查看>>
    Object of type 'ndarray' is not JSON serializable
    查看>>
    Object Oriented Programming in JavaScript
    查看>>
    OBJECTIVE C (XCODE) 绘图功能简介(转载)
    查看>>
    Objective-C——判断对象等同性
    查看>>
    Objective-C之成魔之路【7-类、对象和方法】
    查看>>
    Objective-C享元模式(Flyweight)
    查看>>
    Objective-C以递归的方式实现二叉搜索树算法(附完整源码)
    查看>>
    Objective-C内存管理教程和原理剖析(三)
    查看>>
    Objective-C实现 Greedy Best First Search最佳优先搜索算法(附完整源码)
    查看>>
    Objective-C实现 jugglerSequence杂耍者序列算法 (附完整源码)
    查看>>
    Objective-C实现1000 位斐波那契数算法(附完整源码)
    查看>>
    Objective-C实现2 个数字之间的算术几何平均值算法(附完整源码)
    查看>>
    Objective-C实现2d 表面渲染 3d 点算法(附完整源码)
    查看>>
    Objective-C实现2D变换算法(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现3n+1猜想(附完整源码)
    查看>>
    Objective-C实现9x9乘法表算法(附完整源码)
    查看>>
    Objective-C实现9×9二维数组数独算法(附完整源码)
    查看>>