根據木棍的長度只有 \(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 ...