sicilyOJ 11珠海賽重現 J Ant

2021-06-21 07:08:55 字數 1360 閱讀 2620

這個題的難點在於看懂題意╮(╯▽╰)╭

英語是硬傷,還好有給力隊友。

題意:有乙個n個節點m條邊的無向樹,帶權的。

每個節點的邊都是有順序的,按逆時針順序給出

有p個螞蟻站在一些節點上,每個螞蟻走的速度都是v,剛開始,每個螞蟻都面向著它所在節點的一條邊,

每到達乙個節點,如果不是葉子節點的話就從來的那條邊往右數(逆時針)第一條邊,是葉子節點的話就停下。

還有就是如果兩隻螞蟻走在邊上撞上了的話,就都往回走,這樣的話可以當成兩隻螞蟻互換,可以忽略這種相撞。

求最後走到葉子節點的那只螞蟻所走的時間

其實忽略碰撞的話每個螞蟻走的路線都是唯一的,因此模擬每只螞蟻的路線就可以了,求出最大的那個就好了

還有要注意的就是有可能有的螞蟻一直在繞圈,開個陣列記錄它是不是來過某個點,並且朝向某條邊就行了

#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define inf 0x3f3f3f3f

#define eps 1e-7

#define ll long long

#define ull unsigned long long

#define mp make_pair

#define pb push_back

#define ls i << 1

#define rs ls | 1

#define md ( ( ll[i] + rr[i] ) >> 1 )

#define mxn 520

int n, g[mxn][mxn], len[mxn], m; // len[i]表示節點i的邊數,g[i][j]表示節點i按逆時針的第j條邊

int r[mxn][mxn]; // r[i][j]表示 節點j是節點i的第幾條邊所指向⊙﹏⊙b, 例如r[i][j] = k, 表示節點i的第k條邊是指向節點j

int cost[mxn][mxn];

int at[mxn], to[mxn];

double v;

bool vis[mxn][mxn];

void read()

} scanf( "%d", &m );

for( int i = 1; i <= m; ++i )

}int dfs( int u, int v )

int calc( int k )

int main()

else

printf( "%.4lf\n", ans / v );

} return 0;

}

寫在11月11日

寫在 11 月 11 日 11 月 11 日 是乙個很平常也很特殊的日子,沒有什麼紀念,只是覺得今天應該是個不一般的時候,看著那有著大大螢光螢幕的電子鐘,看著乙個個孑然而立的小寫羅馬數字,是那麼的昂然磅礴,有著不屑於一切氣勢。其實,在今天早上睜開眼睛的時候,就想到了,11 月 11 日 這個很有意思...

SQL中1 1與1 1的使用

1.1 1 的用處 用於只取結構不取資料的場合 例如 create table table temp tablespace tbs temp as select from table ori where 1 1 建成乙個與table ori 結構相同的表table temp,但是不要table or...

Week11作業 A 必做題 11

題目 蒜頭君從現在開始工作,年薪 n 萬。他希望在蒜廠附近買一套 60 平公尺的房子,現在 是 200 萬。假設房子 以每年百分之 k 增長,並且蒜頭君未來年薪不變,且不吃不喝,不用交稅,每年所得 n萬全都積攢起來,問第幾年能夠買下這套房子?第一年年薪 n 萬,房價 200 萬 輸入格式 一行,包含...