2019 年百度之星 程式設計大賽 初賽一

2022-05-19 20:17:47 字數 1097 閱讀 1084

傳送門

[1]hdu

[2]bestcoder

一步可以走乙個或者兩個,求依次進入n個區間[li,ri]的最少步數

就當前位置cur來說,

1)如果下乙個任務的區間包括當前位置,那就可以不動

2)如果下乙個任務區間在當前位置左邊,那就向下乙個的左邊界移動

①如果正好可以全走兩個格仔的話,就在此位置

如果不可以全走兩個格仔的話,

②如果再下乙個位置在左邊的話,那就不動

③如果再下乙個位置在右邊的話,那就把走的一格變成兩格,在左邊界往右乙個位置

3)如果下乙個任務區間在當前位置右邊,那就向下乙個的右邊界移動

①如果正好可以全走兩個格仔的話,就在此位置

如果不可以全走兩個格仔的話,

②如果再下乙個位置在右邊的話,那就不動

③如果再下乙個位置在左邊的話,那就把走的一格變成兩格,在右邊界往左乙個位置

起點在最小區間的左邊界或者右邊界

1 #include2

using

namespace

std;

3#define ll long long

4const

int maxn=1000+50;5

6intn;7

intl[maxn];

8int

r[maxn];

910 ll f(int k,int

p)11

20if(l[k] >p)

2138

else

3956}57

return

ans;58}

59int

main()

6081 ll ans=min(f(1,l),f(1

,r));

8283 printf("

%i64d\n

",ans);84}

85return0;

86 }

view code

2023年百度之星程式設計大賽 初賽 1

b problem description 小度熊拿到了乙個無序的陣列,對於這個陣列,小度熊想知道是否能找到乙個k 的區間,裡面的 k 個數字排完序後是連續的。現在小度熊增加題目難度,他不想知道是否有這樣的 k 的區間,而是想知道有幾個這樣的 k 的區間。input 輸入包含一組測試資料。第一行包含...

2023年百度之星程式設計大賽初賽B

圓環 時間限制 1000ms 描述乙個圓環上有n個位置,這n個位置按順時針依次標號為1,2,n。初始時圓環的每個位置上都有乙個1至n之間的整數,且每個整數只出現一次。任何時刻,你可以將圓環上的數全部逆時針旋轉乙個位置,即第i個位置上的數變為原來第i 1個位置上的數,第n個位置上的數變為原來第1個位置...

2020 年百度之星 程式設計大賽 初賽二

problem description 科學家小沃沃在研究病毒傳播的規律,從而控制疫情。有 n 個人,編號分別為 1,2,n。我們用螢光粉代替病毒,編號為 1 的人,在第 0 時刻塗上了螢光粉,剩下的人在第 0 時刻沒有塗。對於第 i 個人,我們知道這個人在哪些時刻出現在了哪些地方。如果時刻 t,某...