B - 娜娜梦游仙境系列——跳远女王 (最短路)
来源:互联网 发布:java中compare函数 编辑:程序博客网 时间:2024/04/27 16:23
思路:比赛的时候并没有想到,赛后的时候也并没有想出来。
自己一直无法突破的地方在于1000个点,要是我给每个点建边的话,那么100W就会爆,其实并不会爆。
而且这边可以采用的是建双向边,就是j跟j前面的建双向边。这样最终时间会少很多,而且效果是一样的。
最终跑一遍SPFA就可以了
自己一直没有好好学过图和搜索。
听说建图的方法有邻接链表还有什么表来着,自己都不会,可笑。难怪遇到题目的时候会没有一个清晰的思路。校赛结束之后要开始猛补了。
不然邀请赛要坑啊。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;#define MAX 1100#define INF 0x7fffffffint head[MAX];bool vis[MAX];int dis[MAX];int x[MAX],y[MAX];int y0,n,d;int cnt;struct edge{ int v; int next;}edg[MAX*MAX]; void init(){ cnt=0; memset(head,-1,sizeof head);} void addedge(int u,int v){ edg[cnt].v=v; edg[cnt].next=head[u]; head[u]=cnt++; swap(v,u); edg[cnt].v=v; edg[cnt].next=head[u]; head[u]=cnt++;} void bfs(){ for(int i=1;i<=n+1;i++) { vis[i]=0; dis[i]=INF; } dis[0]=0; vis[0]=1; queue<int>q; q.push(0); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=0; for(int i=head[u];i!=-1;i=edg[i].next) { int v=edg[i].v; if(dis[v]>dis[u]+1) { dis[v]=dis[u]+1; if(!vis[v]) { vis[v]=1; q.push(v); } } } }} int getdis(int i,int j){ return (x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);}int main(){ int t; cin>>t; while(t--) { scanf("%d%d%d",&y0,&n,&d); init(); int k; for(int i=1;i<=n;i++) { scanf("%d%d",&x[i],&y[i]); if(y[i]<=d) addedge(0,i); if(y0-y[i]<=d) addedge(n+1,i); for(int j=1;j<i;j++) if(getdis(i,j)<=d*d) addedge(i,j); } if(y0<=d) puts("YES\n1"); else { bfs(); if(dis[n+1]==INF) { puts("NO"); int ans=y0; for(int i=1;i<=n;i++) if(dis[i]!=INF&&y0-y[i]>=0) ans=min(ans,y0-y[i]); printf("%d\n",ans); } else { puts("YES"); printf("%d\n",dis[n+1]); } } }}
0 0
- B - 娜娜梦游仙境系列——跳远女王 (最短路)
- 娜娜梦游仙境系列——跳远女王 (最短路
- - 娜娜梦游仙境系列——梦醒
- 娜娜梦游仙境系列——多民族王国
- 娜娜梦游仙境系列——莫名其妙的插曲
- Acdream || 娜娜梦游仙境系列——诡异的钢琴(公共前后缀
- 娜娜梦游仙境系列——吃不完的糖果(一维DP某个区间和最大
- 观爱丽丝梦游仙境有感
- Cogs 1695. 梦游仙境(分块)
- 菜鸟系列——最短路
- 梦游ZFA仙境,遥想当年苦读
- 最短路(弗洛伊德——最短路)
- Codeforces 707B Bakery(最短路)
- 最短路 -B
- 最短路—1001
- 最短路—1002
- 最短路—1003
- 最短路—1004
- LoadRunner--http状态码
- 大数的阶乘算法
- Elasticsearch之Nested Query
- Oracle创建存储过程,函数,包
- System类可获取的系统属性列表
- B - 娜娜梦游仙境系列——跳远女王 (最短路)
- dubbo起步搭建Spring+SpringMVC+dubbo的开发环境
- C++标准库:使用std_list作为链表
- ThreadLocal
- nefu2015综合训练9组队赛解题报告
- 摘录: 鹧鸪天
- sql 列名的修改
- 如何使用github?github简单使用教程(转)
- EularProject 19: 星期日的个数