hdu 3023 Dirt 優先佇列

2021-06-10 02:57:20 字數 833 閱讀 8959

這道題。就是普通bfs過不了。。 很簡單的優先佇列。。

#include#include#include#include#define n 1001

using namespace std;

int fx[8][2]=,n,m,sx,sy,ex,ey,tp,tb;

struct map

return t1.cb>t2.cb;

}};map map[n][n];

void input()

}}bool isvalide(int x,int y)

void bfs()

{ int i,j,k;

priority_queuequ;

map t1,t2;

int tx,ty;

map[sx][sy].path=0;

map[sx][sy].cb=0;

t1=map[sx][sy];

t1.x=sx;

t1.y=sy;

qu.push(t1);

while(!qu.empty())

{t2=qu.top();

if(t2.cb>tb||(t2.cb==tb&&t2.path>=tp))

return;

qu.pop();

for(i=0;i<8;i++)

{tx=t2.x+fx[i][0];

ty=t2.y+fx[i][1];

if(isvalide(tx,ty))

{if(map[tx][ty].path!=-1)

{if(map[tx][ty].c!=t2.c)

{if(map[tx][ty].cb

hdu 4393 優先佇列)

思路 考慮si最大只有100,所以我們可以建立優先佇列陣列s 1.100 對於每個優先佇列,按第一關鍵字fi第二關鍵字id排序,每次取出所有的優先佇列裡最大值,然後直接 計算 time 1 si fi 找最大的way,將對應的優先佇列pop並輸出對應id即可。1 include2 include3 ...

hdu 4302 優先佇列

進一步學習了優先佇列的用法 題意 乙隻小動物在直線上走,起始位置為零,之後會出現食物,動物要去距離自己最短的食物那,若兩邊的食物距離相等,則選擇之前走的方向的食物 0 x,代表x的位置出現了食物,1代表去吃乙個食物 1 include2 include3 include4 include5 usin...

hdu 4393 優先佇列

用優先佇列儲存每個人的初始距離和編號,每輪求出最快的人,然後pop掉 一開始想遍歷佇列的,後來發現佇列沒辦法遍歷,汗 題意,給幾個第一秒衝出的距離和以後速度,求每秒後最前面人的編號,求完後最前面的退出 2 3100 1 100 2 3 100 51 1 2 23 3 4 13 4 case 1 1 ...