HJ64_MP3光标位置_数组_模拟思路_滑动窗口

思路:用模拟跟踪U、D 得输出的歌曲,用双指针跟踪歌曲当前窗口。

注意,在第一首向上滑动,和最后一首向下滑是,窗口特殊跳动,此时双指针指向特殊处理。

留意到,不管是特殊情况还是普通情况,指针上划时歌曲减一。如1调到10,10上划为9,视为减一。

得到代码如下:

import sys
a = int(sys.stdin.readline().strip())
b=sys.stdin.readline().strip()
#a = 10
#b='UUUU'
left,right=0,4
index=1#标记歌曲第几首
for i in b:
    if i=="U":
        if index==1:
            left=a-3
            right=a+1
            index=a
        else:
            index-=1
        #print("U",index)
    elif i == "D":
        if index==a:
            left=1
            right=5
            index=1
        else:
            index+=1   
        #print("D",index)
    if index not in range(left,right):
        if index<left:
            left-=1
            right-=1
            #print("U",left,right)
        else:
            left+=1
            right+=1
            #print("D",left,right)
if a<=4:
    left=1
    right=a+1
print(" ".join(list(map(str,range(left,right)))))
print(index)

 

posted @ 2023-04-05 13:58  Aneverforget  阅读(28)  评论(0编辑  收藏  举报