奶牛跑步2

2022-05-11 03:26:36 字數 2475 閱讀 2072

p1443 -usaco】奶牛跑步2

description

fj的n(1 <= n <= 100,000)頭奶牛們又興高采烈地出來運動了!她們在一條無限長的小路上跑步,每頭牛起跑的位置都不同,速度也不盡相同。

道路中劃出了若干條跑道,以便她們能快速"超車",同一跑道中的任意兩頭牛都不會出現在相同的位置。不過fj不願讓任何一頭牛更換跑道或者調整速度,他想知道如果讓牛們跑足t(1 <= t <=

1,000,000,000)分鐘的話,至少需要多少條跑道才能滿足需要。

input

第一行有兩個數,n和t;

接下來有n行,每一行兩個數,表示一頭牛的位置和速度,其中位置是乙個非負整數,速度為乙個正整數,均不超過10^9。所有牛的開始位置均不相同,因此n頭牛的資料將以位置公升序的方式給出。

output

輸出為乙個整數,表示所需跑道的最小數目,要保證同一跑道中的任意兩頭牛在t時限內(到第t分鐘結束)不會撞到一起。

sample input

5 3

0 1

1 2

2 3

3 2

6 1sample output

3hint

source

usaco

基本 ,平衡樹

首先得到乙個式子,xi+vi*t < xj+vj*t,若j與i滿足這個條件,則j可以放在i後面,與i用乙個跑道,意思是i無論如何都無法再t時間內追上j。但有很多個點滿足,因為把j放入跑道之後,這條跑道的條件就要用j的資訊來判斷了,所以要使損失最小,則應該把j放到所有滿足條件的值最大的那個後面,所以此時應該貪心乙個乙個的加入,用平衡樹來實現查詢,然後刪除這個前驅,加入這個點。若沒有前驅則表示沒有滿足條件的,需增加乙個跑道,此時ans++;

1 #include2 #include

3 #include4 #include5 #include6 #include7 #include8 #include9 #include10 #include11 #include12 #include13 #include14

#define ll long long

15#define rep(i,a,b) for(register int i=a;i<=b;i++)

16#define re register

17#define il inline

18using

namespace

std;

19const

int n=100010;20

int pre[n],cnt[n],ch[n][2

],n,root,tot;

21ll key[n],t;

22il ll gl()

28 il int getx(int x)

29 il void newnode(int

fa,ll v)

34 il void rotate(int

x) 41 il void splay(int x,int

goal) 49}

50if(goal==0) root=x;//

bug51

}52 il void

insert(ll v)

56int now=root,fa=0;57

while(1

) 61 fa=now;

62 now=ch[now][v >key[now]];

63if(now==0

) 69}70

}71 il int

get_pre()

76 il void del(int

x) 80

if(!ch[x][0]&&!ch[x][1

]) 83

if(!ch[x][0

]) 87

else

if(!ch[x][1

]) 91

int l=get_pre();

92 splay(l,0);//

93 ch[root][1]=ch[x][1

];94 pre[ch[x][1]]=root;//

bug95 ch[x][1]=ch[x][0]=cnt[x]=0;//

96return;97

}98int find(ll k)

104return

ret;

105}

106int

main()

117 cout<118return0;

119 }

奶牛專題2 奶牛曬衣服

問題描述 在熊大媽英明的帶領下,時針和它的同伴生下了許多牛寶寶。熊大媽決定給每個寶寶都穿上可愛的嬰兒裝。於是,為牛寶寶洗曬衣服就成了很不爽的事情。聖人王擔負起了這個重任。洗完衣服後,你就要弄幹衣服。衣服在自然條件下用1的時間可以曬乾a點濕度。摳門的熊大媽買了1台烘衣機。使用烘衣機可以讓你用1的時間使...

BZOJ 2199奶牛議會 2 SAT

傳送門 bzoj2199 許可權題?沒關係,你洛上也有 洛谷 usaco11jan 大陸議會the continental cowngress 一道2 sat簡單題。只需要用到2 sat連有向邊的操作,拓撲排序和縮點都不需要,直接暴力找 非常之暴力 include using namespace s...

跑步中悟道

跑步中悟道 這幾年拼命熬夜的結果是,乙個發福 且糟糕的身體。為了乙個精彩的新的輪迴,決定同時要強健自己的體魄,於是這幾天開始在附近的乙個大學校園裡的操場上開始跑步。今晚跑步的過程中,有乙個人跟在我後面,每次聽見愈發逼近的腳步聲,自己就拼盡全力拚命的不讓他超越,結果越跑越快,累得要死,但最後跑下來之後...