社区讨论
MLE 求助
P9455 [入门赛 #14] 塔台超频 (Hard Version)参与者 4已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo26nuuj
- 此快照首次捕获于
- 2023/10/23 08:52 2 年前
- 此快照最后确认于
- 2023/11/03 09:07 2 年前
CPP
#include<iostream>
#include<queue>
#include<cmath>
#include<string.h>
#include<bitset>
#include<list>
using namespace std;
struct point{
int place;
int fanwei;
};
point *map;
int n;
bool *visited;
queue<int,list<int> > work;
bool bfs(int k){
for(int i=1;i<=n;i++)
visited[i]=0;
while(!work.empty())
work.pop();
work.push(1);
while(work.empty()!=1){
int front=work.front();
work.pop();
if(visited[front])
continue;
visited[front]=1;
for(int i=1;i<=n;i++){
if(abs(map[i].place-map[front].place)<=map[front].fanwei+k&&!visited[i]){
work.push(i);
}
}
}
return visited[n];
}
int check(int k){
return bfs(k);
}
int erfen(int from,int to){
while(from!=to){
int mid=(from+to)/2;
if(check(mid)){
to=mid;
}
else{
from=mid+1;
}
}
return from;
}
int main(){
cin>>n;
map=new point[n+1];
visited=new bool[n+1];
for(int i=1;i<=n;i++){
cin>>map[i].place>>map[i].fanwei;
}
cout<<erfen(0,2000000000);
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...