1 条题解

  • 0
    @ 2025-6-6 20:05:33

    贪心的想,在每一个没有 #\texttt{\#} 的一列上,必定需要放一个(首尾不算)。那么我们只需要贪心的处理有 #\texttt{\#} 的列即可。

    s1 = input().strip()
    s2 = input().strip()
    
    len_str = len(s1)
    num = 0  # 计数器
    l = len_str
    r = 0
    
    # 寻找第一出现和最后一个出现#的位置并记录
    for i in range(len_str):
        if s1[i] == '#' or s2[i] == '#':
            l = min(l, i)
            r = max(r, i)
    
    # 转换为列表以便修改
    s1 = list(s1)
    s2 = list(s2)
    
    for i in range(l, r):
        # 第一种情况的判断
        if s1[i] == '#' and s1[i + 1] == '.' and s2[i] == '.':
            num += 1
            s1[i + 1] = '#'
    
    # 第二种情况的判断
        if s1[i] == '.' and s2[i + 1] == '.' and s2[i] == '#':
            num += 1
            s2[i + 1] = '#'
    
    # 第三种情况的判断
        if s1[i] == '#' and s2[i] == '#' and s2[i + 1] == '.' and s1[i + 1] == '.':
            p = i
            q = i
            for j in range(i + 1, r + 1):
                if s1[j] == '#':
                    p = j
                    break
                if s2[j] == '#':
                    q = j
                    break
            if p >= q:
                s1[i + 1] = '#'
                num += 1
            else:
                s2[i + 1] = '#'
                num += 1
    
    print(num)
    
    • 1

    信息

    ID
    986
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    599
    已通过
    11
    上传者