2019百度之星初賽一 1002Game

2021-09-26 06:41:17 字數 840 閱讀 6805

problem description

度度熊在玩乙個好玩的遊戲。 遊戲的主人公站在一根數軸上,他可以在數軸上任意移動,對於每次移動,他可以選擇往左或往右走一格或兩格。 現在他要依次完成 n個任務,對於任務 i,只要他處於區間 [ai,bi]上,就算完成了任務。 度度熊想知道,為了完成所有的任務,最少需要移動多少次? 度度熊可以任意選擇初始位置。

依次完成任務,所以度度熊原來所處的位置就是第一次輸入的任務區間【l,r】,其間的任何位置都可以當做度度熊的初始位置。所以把【l,r】作為度度熊的初始可能存在區間

當要進入下乙個區間時候,有三種情況(記要進入的新區間為【ll,rr】)

1【l,r】…【ll,rr】新區間在舊區間的前方且無交集,

如果ll-r是偶數,那麼度度熊耗費(ll-r)/2的移動步數能走到 ll位置,故 l=r=ll;更新度度熊的新區間為【ll,ll】

如果ll-r是奇數,那麼度度熊耗費(ll-r)/2+1的移動步數能走到 ll或者ll+1位置,

但當ll+1新區間在舊區間的後方且無交集 和情況一類似,

3新區間在舊區間有交集度度熊本來就可能位於舊區間的任何一點,l=max(l,ll);r=min(r,rr);縮減度度熊的存在區間即可

#include

#include

using namespace std;

int n,l,r,x,y,t;

long

long sum;

intmain()

else

if(l>=y)

else

} cout<}}

2018百度之星初賽 A 1002

度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 n 個空的雙端佇列 編號為 1 到 n 你要支援度度熊的 q 次操作。1 u w val 在編號為 u 的佇列裡加入乙個權值為 val 的元素。w 0 表示加在最前面,w 1 表示加在最後面 2 u w 詢問編號為 u 的佇列裡的某...

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

傳送門 1 hdu 2 bestcoder 一步可以走乙個或者兩個,求依次進入n個區間 li,ri 的最少步數 就當前位置cur來說,1 如果下乙個任務的區間包括當前位置,那就可以不動 2 如果下乙個任務區間在當前位置左邊,那就向下乙個的左邊界移動 如果正好可以全走兩個格仔的話,就在此位置 如果不可...

百度之星 初賽B

a 傳送門 點我 求聯通塊個數,對於簡單圖而言,就是c v e,其中c就是聯通塊個數,v是頂點數,e是邊數 include include include include using namespace std const int max n 2e5 10 int n,m,k vectorg max...