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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。