題目:l長的棍子上有n個螞蟻,他們分別向左或右爬,速度為1,求t時間後各螞蟻的狀態
題解:白書給出了乙個很巧妙的解法,將螞蟻看作質點,相撞掉頭等於對穿而過。因為掉頭所以,他們最後的順序與輸入時在棍子上的順序相同。所以只要記錄下初始狀態下螞蟻的順序,算出結束後的位置後根據上面的順序輸出就可以了。這個思想真**!
ac**:
//#define debug
#include#include#include#include#include#define max 10010
#define ll long long ;
using namespace std;
struct ant
}before[max],after[max];
int order[max];//記錄順序
int main() );
after[i] = ant();//id要等到sort完,p+t*d:當前位置+時間*方向
} sort(before, before + n);
for (int i = 0; i < n; i++)//記錄輸入的螞蟻位置順序
order[before[i].id] = i;
sort(after,after + n);
for (int i = 0; i < n-1; i++)
if (after[i].p == after[i+1].p)
after[i].d = after[i+1].d = 0;//置碰撞中的螞蟻
UVA 10881 經典模擬題
題目大意 一根長l厘公尺的木棍上有n只螞蟻,每只螞蟻有個開始的位置和爬行方向,速度為1.當兩隻螞蟻相撞後,兩者同時掉頭繼續爬行,求按輸入順序給出每只螞蟻t秒後的位置後朝向。解題思路 1.每只螞蟻相撞後同時掉頭可以看做對穿而過,關鍵的問題就在於求位置的變化。2.按位置從小到大排序,可以驚奇的發現排序後...
UVa 755 487 3279解題報告
第一道超時題目,資料量太大達到100000,如果要乙個乙個手動模擬比較,肯定會超時。看了別人的 都是用到了stl的map容器。果然是神器,如果不用map還真不知道怎麼在3秒內輸出結果。用了map是1秒多。很清晰,就沒寫注釋。include include include include includ...
uva839解題報告
題目大意就是根據幹槓平衡原理,判斷題目所給出的資料組成的天平能否平衡。注意,此天平可能包含子天平。輸入時,如果w為0,則表示包含子天平,子天平按照先左後右的方法輸入。解題思路 這是二叉樹的問題,資料的輸入就好比先序遍歷。判斷有無子節點就是判斷w是否為0 本題需要思考兩點 第乙個如何判斷子天平平和 第...