結果
| 問題 | No.2354 Poor Sight in Winter |
| コンテスト | |
| ユーザー |
vjudge1
|
| 提出日時 | 2026-11-11 14:30:55 |
| 言語 | C++14 (gcc 15.3.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 33 ms / 2,000 ms |
| + 25µs | |
| コード長 | 1,471 bytes |
| 記録 | |
| コンパイル時間 | 1,091 ms |
| コンパイル使用メモリ | 190,832 KB |
| 実行使用メモリ | 9,864 KB |
| 最終ジャッジ日時 | 2026-11-11 14:30:58 |
| 合計ジャッジ時間 | 3,753 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 28 |
ソースコード
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e3+5;
int n,m,X,vis[N];ll dis[N];
struct dot{
int x,y;
}a[N];
struct sss{
ll v,w;
};
vector<sss>g[N];
bool chk(int x){
for(int i = 1;i<=m+2;i++)dis[i]=0x3f3f3f3f3f3f3f3fLL,vis[i]=0;
int s = m+2,t=m+1;
dis[s]=0;
for(int i = 1;i<=m+2;i++){
ll res = 4557430888798830399ll,q=0;
for(int j = 1;j<=m+2;j++){
if(dis[j]<=res&&(!vis[j]))res=dis[j],q=j;
}
vis[q]=1;ll w= dis[q];
for(auto v:g[q]){
ll nw=w+(v.w-1)/x;
if(nw<dis[v.v]){
dis[v.v]=nw;
}
}
}return dis[t]<=X;
}
int main(){
//freopen("road.in","r",stdin);
//freopen("road.out","w",stdout);
scanf("%d%d",&m,&X);
scanf("%d%d%d%d",&a[m+1].x,&a[m+1].y,&a[m+2].x,&a[m+2].y);
for(int i = 1;i<=m;i++){
scanf("%d%d",&a[i].x,&a[i].y);
}
for(int i = 1;i<=m+2;i++){
for(int j = 1;j<=m+2;j++){
if(i==j)continue;
g[i].push_back({j,(a[i].x-a[j].x>0?a[i].x-a[j].x:-a[i].x+a[j].x)+(a[i].y-a[j].y>0?a[i].y-a[j].y:-a[i].y+a[j].y)});
}
}
//for(int i = 1;i<=m+2;i++){
// for(auto j:g[i]){
// printf("%d %d %d\n",i,j.v,j.w);
// }
//}
//printf("%d\n",chk(4));
int l = 0,r=1e9+1;
while(l+1<r){
int mid = (l+r)>>1;
if(chk(mid))r=mid;
else l=mid;
}
printf("%d\n",r);
}
vjudge1