BJFU 1398 螞蟻下落

2021-07-04 04:42:35 字數 1147 閱讀 1164



時間限制(c/c++):1000ms/3000ms          執行記憶體限制:65536kbyte

總提交:17            測試通過:5

描述

一根長度為1公尺的木棒上有若干只螞蟻在爬動。它們的速度為每秒一厘公尺或靜止不動,方向只有兩種,向左或者向右。如果兩隻螞蟻碰頭,則它們立即交換速度並繼續爬動。三隻螞蟻碰頭,則兩邊的螞蟻交換速度,中間的螞蟻仍然靜止。如果它們爬到了木棒的邊緣(0或100厘公尺處)則會從木棒上墜落下去。在某一時刻螞蟻的位置各不相同且均在整數厘公尺處(即1,2,3,…99厘公尺),有且只有乙隻螞蟻a速度為0,其他螞蟻均在向左或向右爬動。給出該時刻木棒上的所有螞蟻位置和初始速度,找出螞蟻a從此時刻到墜落所需要的時間。

輸入

第一行包含乙個整數表示螞蟻的個數n(2<=n<=99),之後共有n行,每一行描述乙隻螞蟻的初始狀態。每個初始狀態由兩個整數組成,中間用空格隔開,第乙個數字表示初始位置厘公尺數p(1<=p<=99),第二個數字表示初始方向,-1表示向左,1表示向右,0表示靜止。

輸出

螞蟻a從開始到墜落的時間。若不會墜落,輸出「cannot fall!」

樣例輸入

410 1

90 0

95 -1

98 -1

樣例輸出

98題目**

songjs

螞蟻問題最關鍵的就是可以無視其他螞蟻,通過分析,可以得出在螞蟻a的左邊向左走的以及在螞蟻a的右邊的這群螞蟻對a沒影響可以忽略

3種情況:

1.左邊螞蟻數量和右邊螞蟻數量相等——>螞蟻a不變

2.左邊螞蟻更多——>將螞蟻a的位置向左移r個螞蟻再向右走到頭

3.右變螞蟻更多——>將螞蟻a的位置向右移l個螞蟻再向左走到頭

#include

#include

using namespace std;

struct ant

;ant a[100];

ant b[100];

bool cmp(struct ant a,struct ant b)

return 0;}

bjfu1262 優先佇列

比較典型的應用優先佇列的題。題目是在乙個長為n的陣列中,依次問m個數中的最小值。那麼把值和下標做成乙個結構體,放進優先佇列裡,每次移動視窗就把該t的t掉,剩下的最小值就是答案,複雜度nlogn,輕鬆ac。author ben include include include include inclu...

kali攻擊139埠 簡易入侵139埠

提到139埠,我想知道的人一定非常多,本來是不想用寫這個教程的,但考慮要照顧到新人,所以還是簡單的寫一下。首先,連線的命令是 netuse ip位址 ipc content lt 空格 密碼 user 使用者名稱 net use 192.168.1.11 ipc content nbsp 12345...

BJFU 1399 警察抓小偷

時間限制 c c 5000ms 10000ms 執行記憶體限制 65536kbyte 總提交 12 測試通過 4 描述 警察知道小偷的位置,想要抓住它。警察和小偷都位於數軸上,警察起始位於點n 0 n 100000 小偷位於點n 0 k 100000 警察有兩種移動方式 1 從x移動到x 1或x 1...