1368 燃燒木棍

2022-09-17 01:09:09 字數 1164 閱讀 3719

根據木棍的長度只有 \(1\) 和 \(\sqrt\) 可知,若兩根木棍相交,則一定交在中點。

那我們先將所有點的座標變成兩倍,時間也變成兩倍,然後對於長度為 \(\sqrt\) 的木棍,取中點,向兩個端點連長度為 \(t\)(因為是\(\frac\)) 的邊。長度為 \(1\) 的木棍就直接將兩個端點連起來,長度為 \(2t\)。

然後跑 \(\mathrm\)。列舉每個點作為起點(注意不要列舉新增的中點),求出其到最遠的點的燃燒時間。但在這個時間內可能有些邊沒燒完。所以再遍歷所有邊,找出需要額外時間最多的邊,加入答案。

最後將答案除以 2,因為之前將時間變成了兩倍。

#include#include#include#define n 50

#define x 805

#define db double

using namespace std;

struct node

edg[n];

struct edge

a[n<<2];

int n,x1,x2,y1,y2,t,cnt,tot,sum1,sum2,id[x][x],dis[n<<2][n<<2];

db ans;

bool bj[n][n];

void add(int x,int y,int z)

int main()

memset(dis,0x3f3f3f3f,sizeof(dis));

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

else}}

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

dis[i][i]=0;

for (int k=1;k<=cnt;++k)

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

for (int j=1;j<=cnt;++j)

if (i!=j&&i!=k&&j!=k)

dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);

ans=2147483647.0;

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

ans=min(ans,(db)((sum1+sum2/2.0)/2.0));

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

return 0;

}

SSL P1864 燃燒木棍 題目

提高組 燃燒木棍 time limit 10000ms memory limit 65536k total submit 23 accepted 16 case time limit 1000ms description tom是調皮的孩子,特別喜歡玩火,現在他手上有若干根長度分別為1和 的木棍,還...

燃燒溫度計算程式 催化燃燒處理,催化燃燒裝置

催化燃燒處理,催化燃燒裝置,催化燃燒裝置將催化燃燒過程中的廢氣,廢氣管道通過風扇進入熱交換器加熱,再次進入加熱室將廢氣催化燃燒開始加熱到需要的溫度。加熱的廢氣通過催化劑層燃燒。由於催化劑的影響,催化燃燒過程的起始溫度約為250 300 遠低於直接燃燒法 670 800 能耗遠低於直接燃燒法。同時,在...

燃燒的火焰

將學習的知識點 影象在microbit螢幕上顯示之前,是什麼樣的 乘法運算子怎麼處理客串 數字 影象 怎麼檢測microbit 發生搖晃 怎麼選擇隨機數 怎麼讓microbit上的影象移動和變淡 所需工具 硬體 microbit主機板 資料線軟體 mu 或 upycraft micropython ...