題目鏈結
題目大意:給出一張地圖,上面有些點有障礙物,現在有t個機會能夠移除障礙物,問地圖上點對間的最長的歐幾里得距離
題解:由於答案由一對點確定,很容易想到列舉這一對點
記列舉的第乙個點為st,第二個點為ed,以st跑spfa,d[i]表示從st到i經過的最少的障礙數,對於每個ed,若d[ed]<=t,則更新答案
時間複雜度o(
n2m2
+nmk
e),列舉+spfa
實現上對點重新編號,因為我覺得這樣簡潔……
我的收穫:思維強啊,變通啊
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define inf 0x3f3f3f3f
#define f first
#define s second
#define pii pair
const
int m=10005;
const
int dx=;
const
int dy=;
int n,m,t,t,cnt;
int head[m],d[m],num[45][45];
bool vis[m],block[m];
char s[45];
pii g[m];
queue
q;struct edgee[m];
void add(int u,int v)
double calc(pii x,pii y)
void spfa(int st)}}
}void work()
printf("%.6lf\n",ans);
}void init()
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
for(int k=1;k<=4;k++)
}int main()
BZOJ1295 SCOI2009 最長距離
time limit 10 sec memory limit 162 mb submit 1719 solved 935 submit status discuss windy 有一塊矩形土地,被分為 n m 塊 1 1 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就...
BZOJ1295 SCOI2009 最長距離
給出乙個n m的矩陣,有障礙物,a,b 和 c,d 存在距離當且僅當兩個點能互相到達,且距離為歐幾里德距離 可以移走t個障礙物,求出距離最大的兩個點的距離 n,m這麼這麼小 直接o n2m2 跑最短路,水題 include include include include include using ...
bzoj1295 SCOI2009 最長距離
scoi2009 最長距離 time limit 10 sec memory limit 162 mbwindy有一塊矩形土地,被分為 nm 塊 11 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就為兩個格仔中心的歐幾里德距離。如果從格仔a不可以走到格仔b,就沒有距離...