poj 1852 腦洞大開(Ants)

2021-07-04 20:33:34 字數 690 閱讀 2159

題意:有乙個一維的數軸,給定其長度len(數軸範圍為[0,len])和上面的螞蟻數n。接下來給出n只螞蟻的座標,都位於整數點之上。螞蟻的移動速度為1,兩隻螞蟻迎面相遇立即朝相反方向運動。假設螞蟻的初始方向未知,問所有螞蟻掉落數軸的最小和最大時間。

思路:最小時間比較顯然,就是所有螞蟻不碰撞,即偏左的螞蟻向左走,偏右的螞蟻向右走(這樣想,一旦出現螞蟻相遇,那麼這兩隻螞蟻掉落走過的距離之和=len,那麼必有乙隻螞蟻走過的距離》=len/2。而不出現相撞的話掉落最晚的螞蟻走過的距離也是<=len/2的)。

最大時間有點像腦筋急轉彎。考慮一次相撞,兩隻螞蟻方向反向而速度不變,可以看成兩隻螞蟻繼續走,只不過交換了身份。所以就變成了求某只螞蟻距離邊界最遠的距離。

#include #include #include using namespace std;

#define clc(s,t) memset(s,t,sizeof(s))

#define inf 0x3fffffff

#define n 25

int t,len,n;

int main(){

scanf("%d",&t);

while(t--){

int i,j,resmin,resmax;

resmin = resmax = 0;

scanf("%d %d",&len,&n);

for(i = 0;i

POJ1852螞蟻問題 cpp

簡要的分析一下題意思想 螞蟻相遇,可以看做交錯而過。轉化為乙隻螞蟻的問題,在綜合多只求最大最小就好了 include include include include using namespace std const intmaxn 1000010 intn,l,x maxn void slove ...

解題報告 POJ1852 Ants

解析 本題需要自己建立模型,思考演算法。本題要求最後乙隻螞蟻掉落的最小時間和最大時間,如果兩隻螞蟻相遇,他們會掉頭,但是我們可以將它們看作沒有相遇。因為a遇到b後掉頭,把a看作b,b看作a,就相當於b繼續走,a也繼續走,只是兩隻螞蟻交換了而已,而我們不區別螞蟻個體。錯誤報告 示例 include i...

腦洞大開 c 重啟病毒

介紹 看到知乎上的乙個問題,於是有了做乙個簡單病毒的主意,花了一下午的時間寫出來了,給同學發著玩玩,還挺有意思。說一下病毒的症狀 執行exe程式後,電腦會重啟,之後的每次開機,都會在開機後60s後關機。因為不是個惡意病毒,所以在每次開機的時候都會彈出乙個txt檔案告訴他們解決方案。分析 整個病毒分為...