題目鏈結
這道題資料範圍比較小,所以方法還是比較暴力的。
思路:
先按每個格仔的狀態,讓所有格仔與他周圍的格仔連一條權值為它連向那個格仔的值(0或1)。然後我們n方列舉所有格仔跑最短路,最短路即為從起點到終點的最小障礙數。然後我們列舉所有最短路,先看他移除障礙後是否只用了小於等於k次機會,然後求出兩點間的距離,取max即可。
**如下:
#includeusingview codenamespace
std;
const
int maxn=1e6+7
;struct
nodeedge[maxn*3
];int
head[maxn],cnt;
int num[550][550
];int val[550][550
];char s[550][550
];int
n,m,t;
void add(int x,int y,int
v)priority_queue
int ,int> >q;
double dist(int x,int y,int xx,int
yy)double
ans;
bool
vis[maxn];
intdis[maxn];
void dijkstra(int
x) }
}}int
main()
}/*for(int i=1;i<=n;i++)
printf("\n");
}*/for(int i=1;i<=n;i++)
}for(int i=1;i<=n;i++)}}
}printf(
"%.6lf\n
",ans);
return0;
}
SCOI2009 最長距離
windy有一塊矩形土地,被分為 nm 塊 11 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就為兩個格仔中心的歐幾里德距離。如果從格仔a不可以走到格仔b,就沒有距離。如果格仔x和格仔y有公共邊,並且x和y均不含有障礙物,就可以從x走到y。如果windy可以移走t塊障...
1295 SCOI2009 最長距離
題目鏈結 題目大意 給出一張地圖,上面有些點有障礙物,現在有t個機會能夠移除障礙物,問地圖上點對間的最長的歐幾里得距離 題解 由於答案由一對點確定,很容易想到列舉這一對點 記列舉的第乙個點為st,第二個點為ed,以st跑spfa,d i 表示從st到i經過的最少的障礙數,對於每個ed,若d ed t...
題解 P4159 SCOI2009 迷路
large 題目和普通的 01 路徑矩陣加速有一點區別,做法很巧。large 給定乙個鄰接矩陣,即每個點之間的邊權,若為 0 則無邊,因為是 a a 的矩陣,所以隱藏含義是每條邊權 1 9 large 因為邊權不只是 1 了,所以不能直接就將每個點連線邊做矩乘,但是資料範圍太大又不能不用矩乘。注意到...