求助 只有前两个是AC

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

zhouyf828 @ 2023-08-29 20:30:26

a=input()+' '
for i in range(len(a)):
    if a[i]==" ":
        cd=int(a[0:i])   #cd马路长度
        qy=int(a[i+1:-1])  #区域数目
        break
q2=[[0 for i in range(2)] for j in range(qy)]  #q2储存起始点终止点
for j in range(qy):
    b=input()+' '
    for k in range(len(b)):
        if b[k]==" ":
            qd=int(b[0:k])
            zd=int(b[k+1:-1])
            q2[j][0]=qd
            q2[j][1]=zd
            break
for i in range(1,len(q2)): #感觉是这后面出了问题
    for j in range(i,len(q2)):
        if q2[j][1]>=q2[i-1][0] and q2[j][0]<q2[i-1][0]:
            q2[i-1][0]=q2[j][0]
            q2[j][1],q2[j][0]=-1,-1
        elif q2[j][0]<=q2[i-1][1] and q2[j][1]>q2[i-1][1]:
            q2[i-1][1]=q2[j][1]
            q2[j][1],q2[j][0]=-1,-1
for i in range(len(q2)):
    if q2[i][0]!=-1:
        cd-=q2[i][1]-q2[i][0]+1
cd+=1
print(cd)

希望有大佬帮忙看看


by zhouyf828 @ 2023-08-29 20:39:58

@liulechen 没学,高中只学了python


by liu_le_chen @ 2023-08-29 20:40:21

我不懂python对不起@zhouyf828


by zhouyf828 @ 2023-08-29 20:40:40

@liulechen 我就是按照这个枚举出来的


by liu_le_chen @ 2023-08-29 20:41:19

你的下标是从0开始的吧@zhouyf828


by liu_le_chen @ 2023-08-29 20:41:48

0开始,n结束


by zhouyf828 @ 2023-08-29 20:45:11

@liulechen 帮我看就很感谢了,我最后那段思路是如果一个区间A的终点比区间B的起点大,而且这个区间A的起点比区间B的起点小,就用这个区间A起点代替区间B的起点。或者如果一个区间A的起点比区间B的终点小,而且这个区间A的终点比区间B的终点大,就用这个区间A终点代替区间B的终点点。然后把区间A起终点改为-1,最后用总长度减去每个区间(起点非-1的区间)的(终点-起点+1)+1算出树,不知道代码哪里错了,感觉思路没问题


by liu_le_chen @ 2023-08-29 20:46:01

所以说你现在年级@zhouyf828


by zhouyf828 @ 2023-08-29 20:46:04

@liulechen 我发的方法没弄下标


by zhouyf828 @ 2023-08-29 20:46:35

@liulechen 新大一,刚开学还没上课自己复习一下高中的知识


by ybchenyuyang @ 2023-08-29 20:47:34

@zhouyf828 感觉你的思路好复杂啊


上一页 | 下一页