(小鳥的點心)

2021-08-14 15:58:49 字數 1181 閱讀 4068

滑完雪之後,ことり突然想吃點心啦!於是她去了甜品店。

日本的冬天經常下雪。不幸的是,今天也是這樣,每秒鐘雪的厚度會增加q公釐。

秋葉原共有n個地點,編號從1到n。每個地點在開始的時候的積雪高度為hi。

有m條雙向道路連線這些地點,它們的長度分別為wi公尺。

雪太大,公共運輸系統已經停擺了,所以ことり得走路回家。她走路的速度是1m/s。

為了方便地圖的繪製,秋葉原的道路規劃使得每條道路嚴格地連線兩個不同的地點,並且不會有兩條道路連線的地點相同。

每個地點都有乙個極限雪高li,單位是公釐,如果到達這個地點的時候,這裡的雪的高度高於li則會被困在這個點走不出去,無法成功地走到ことり家。

點心店這個地點的編號是s,ことり家的編號是t。

不考慮點心店和ことり家的雪。

ことり想在g秒內回到家吃點心,越快越好。如果在g秒之內,ことり無法到家,或者她被困在路上了,那麼ことり會把wtnap變成她的點心( ・ 8 ・ )

spfa統計降雪量,超過的不能走,特判重點。

#include

using

namespace

std;

#define ll long long

const

int maxn=6e5+5;

const ll inf=1e18+7;

struct edgee[maxn<<1];

ll head[maxn],cnt=0;

inline

void add(ll u,ll v,ll w),head[u]=cnt;}

queue

que;

ll dis[maxn],n,m,s,t,d,q,hi,li,xz[maxn];

bool vis[maxn];

void spfa(ll x)}}

// cout<}

}int main()

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

for(ll i=1;i<=n;i++)dis[i]=inf;

spfa(s);

if(dis[t]<=d)printf("%lld\n",dis[t]);

else

printf("wtnap wa kotori no oyatsu desu!\n");

return

0;}

飛揚的小鳥

顯然的思路,用網路流做。對每個洞拆點,i.j表示第i個洞被通過這個洞的倒數第j隻鳥通過。然後連邊跑費用流。然而邊數太多直接 怎麼辦?注意到i.j沒被流i.j 1就絕不可能被流。因此動態加邊,初始只連所有到x.1的。目前連到x.y,流成功一次加上所有到x.y 1的邊。然後莫名很慢,所以這裡本辣雞加上了...

憤怒的小鳥

對於每兩隻豬,只要他們的橫座標不一樣,就會有一條經過原點的二次函式y ax2 bx同時經過這兩隻豬,那麼這時就是解二元一次方程的時候了,設第一只豬的座標為 x1,y1 第二隻豬的座標為 x2,y2 y1 ax1 2 bx 1 y2 ax2 2 bx 2 化為 b y 1 ax 12x1 y2 ax2...

飛翔的小鳥

但是轉移時需要先轉移上公升然後下落。還有就是管內也要轉移 否則跳k步可以跳上去的不能上去 include include include using namespace std struct nodea 11000 struct nodeb 11000 int inf 99999999 int n,...