python 20分,求大佬解题!

P1047 [NOIP2005 普及组] 校门外的树

v83118 @ 2023-01-12 16:50:54

ab = input().split() a = int(ab[0]) b = int(ab[1]) s = [] for i in range(0,a+1): s.append(str(i)) for k in range(b): cd = input().split() c = int(cd[0]) d = int(cd[1]) for y in range(c,d+1): if str(y) in s: s.remove(str(y)) print(len(s))


by _saltFish_ @ 2023-01-12 16:53:50

@v83118 建议把代码放进代码块,这种整成依托答辩的代码没人调。


by _saltFish_ @ 2023-01-12 17:02:03

@v83118 Python 自带超大常数,这一题时间复杂度卡得比较紧,所以这边建议换一种语言来做。


by Jasonshan10 @ 2023-01-12 20:04:50

建议使用更丰富的展现

使用 Markdown

戳这里


by Ktm_Tom @ 2023-02-11 23:46:53

ab = input().split() a = int(ab[0]) b = int(ab[1]) 可以直接写成:a,b=map(int,split().split()),你原来这样输入根本获取遍历b的值,因为输入的时候有空格,不知道你怎么会得20分????(请回答一下)

我提供以下思路(我提交后满分的):江路的长度理解为以为坐标轴,定义一个空列表,强转为集合(得到一个空集合),写一个while循环,用m也就是区域的数目来控制循环次数,在每一次循环里输入u,v,然后for循环u到v,将循环的每一个数增到集合里,利用集合的不重复性去重,得到的是每一棵要被移走的树的坐标集合,最后集合长度就是树木数目,坐标轴长度减去树木数目+1 等于 没有被移走的树木数目(即马路上剩余的树木数量。)


|