weixin_51542019 2022-04-09 23:19 采纳率: 75%
浏览 35
已结题

python 关于#list#的问题,如何解决?

背景

着色书

我拿出我最喜欢的涂色书,翻到一张我还没有涂色的随机页面,然后把它放在我的桌子上。然后我拿出我所有的蜡笔并将它们排列在桌子上(这是一张很长的桌子)。第 i 个蜡笔的颜色是字符串 c[i](例如“blue”)。许多蜡笔具有相同的颜色。事实上,无论我有多少蜡笔,其中最多有30种不同的颜色。

要开始上色,我总是会拿出一张放在桌子上的蜡笔的子列表(sublists)(参见 Q1 的定义),然后把其余的收起来。
子列表(sublists)定义:列表a的子列表是您可以通过从 a 的开头删除一些(可能为 0)元素,然后从其末尾删除一些(可能为 0)元素来获得的任何列表。
我看看我面前的线条艺术,想知道,“我需要多少种不同的颜色才能让它看起来很棒?一?二?也许三个?”。

现在你明白了我的困境,决定帮助我,告诉我每个数字 k,如果我要使用 k 种不同的颜色,我需要带的最少蜡笔数量是多少?

Input

输入由一行组成,其中包含 n 个以空格分隔的颜色名称,指定列表 c。

Output

设 m 为 c 中不同颜色的数量。然后,输出 m 个空格分隔的整数。它们中的第 k 个(基于 1)应该是我需要使用的最少数量的蜡笔,以便它们之间至少有 k 个不同的颜色。

限制

1 ≤ n ≤ 5 × 104
1 ≤ len(c[i]) ≤ 5
c中最多有30种不同的颜色。

时限

您的程序必须在任何有效输入的 4 秒内完成运行。

Sample Input 1

green red red blue red red green

Sample Output 1

1 2 4

Sample 1 Explanation

如果我只想使用一种颜色,我可以拿任何一支蜡笔。
如果我想使用 2 种不同的颜色,我可以采用长度为 2 的子列表,例如子列表 red blue。
如果我想使用所有三种颜色,最小可能的子列表长度为 4。例如,我可以采用蓝色红色红色绿色。

Sample Input 2

r g z g b b r r g y g g y b

Sample Output 2

1 2 3 5 8

提示

有几种方法可以解决这个问题,但并不是所有的方法都足够快以在时间限制内通过最大的测试用例。
对于 100% 解决方案,这是一个起点(70% 解决方案不需要):当您处理颜色时,如果您知道每种颜色最近出现的索引怎么办?

我的代码(没什么思路 随便打打
def f():
while(start<=end):
mid = (start + end)//2
if(is_possible_to_visit_all_planets(d,k,mid)):
minimum_capacity_required = min(minimum_capacity_required,mid)

  • 写回答

2条回答 默认 最新

  • 关注

    你题目的解答代码如下:

    c = input().split()
    dic = {}
    m = len(set(c))
    li = [len(c)] * m
    for i,d in enumerate(c):
        dic[d] = i
        sli = sorted([i-v+1 for k,v in dic.items()])
        for t,x in enumerate(sli):
            if li[t] > x:
                li[t] = x
    print(*li,sep=" ")
    

    img

    如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月21日
  • 已采纳回答 4月21日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 视频编码 十六进制问题
  • ¥15 Xsheii7我安装这个文件的时候跳出来另一个文件已锁定文件的无一部分进程无法访问。这个该怎么解决
  • ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
  • ¥15 FileNotFoundError 解决方案
  • ¥15 uniapp实现如下图的图表功能
  • ¥15 u-subsection如何修改相邻两个节点样式
  • ¥30 vs2010开发 WFP(windows filtering platform)
  • ¥15 服务端控制goose报文控制块的发布问题
  • ¥15 学习指导与未来导向啊
  • ¥15 求多普勒频移瞬时表达式