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 liu_le_chen @ 2023-08-29 20:53:14
我们也看不懂呢@zhouyf828
by zhouyf828 @ 2023-08-29 20:53:29
@liulechen 课还没排出来不知道老师是谁
by ybchenyuyang @ 2023-08-29 20:53:46
@zhouyf828 好叭,外行不懂。
话说回来你用二维干什么??一维标记就行了呀
by zhouyf828 @ 2023-08-29 20:54:10
@liulechen 我改了一下加了包含的情况,结果第三个也过了,除了前三个一个都没过
by zhouyf828 @ 2023-08-29 20:55:55
@cyyyyds857 我原来没想用标记(标记方法我已经全部通过了),我想用合并的方法(专业名词我也不懂),就是把重复车站区间全部合并,最后尾-头算车站区间长度
by ybchenyuyang @ 2023-08-29 20:57:45
@zhouyf828 我虽然不懂py,先发个伪代码
read l
read m
foreach from 0 to m-1 :
read u
read v
foreach from u to v:
sum[j]=1
foreach from 0 to l
a=a+sum[]
懒得打了正经的伪代码,看得懂就行了
by liu_le_chen @ 2023-08-29 20:58:47
你不都过了吗?
by liu_le_chen @ 2023-08-29 21:00:32
能简单点过为什么要搞复杂呢?@zhouyf828 (不懂不懂
by zhouyf828 @ 2023-08-29 22:16:05
@cyyyyds857 我就是按这种方法过了,谢谢了