07-图4. Saving James Bond - Hard Version (30)
来源:互联网 发布:骚男辣条淘宝店链接 编辑:程序博客网 时间:2024/06/06 01:32
本题测试点5是从小岛范围内可以直接跳到岸边……
测试点4是验证步数第一跳最小的情况,刚开始没有考虑回溯,所以错了……
#include <stdio.h>#include <string.h>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <math.h>#include <stdlib.h>#include <time.h>using namespace std;const int inf=1<<30;struct node{ double x,y;} a[100+5];int n,vis[100+5],b[100+5],ans[100+5],cnt;double d,ansfirst,nowfirst;int dis(node d1,node d2){ if(d*d<(d1.x-d2.x)*(d1.x-d2.x)+(d1.y-d2.y)*(d1.y-d2.y)) return 0; return 1;}int first(int d1){ if(sqrt(a[d1].x*a[d1].x+a[d1].y*a[d1].y)>d+7.5) return 0; else return 1;}double first1(int d1){ return sqrt(a[d1].x*a[d1].x+a[d1].y*a[d1].y)-7.5;}int safe(node d1){ if(d1.x>=50-d) return 1; if(d1.y>=50-d) return 1; if(d1.x<=-50+d) return 1; if(d1.y<=-50+d) return 1; return 0;}void dfs(int d1,int now){ int i; if(safe(a[d1])) { //printf("%d %.2f\n",now,nowfirst); if(now<cnt) { for(i=0; i<now; i++) ans[i]=b[i]; cnt=now; ansfirst=nowfirst; } else if(now==cnt&&ansfirst>nowfirst) { for(i=0; i<now; i++) ans[i]=b[i]; cnt=now; ansfirst=nowfirst; } return ; } else { for(i=1; i<=n; i++) { if(!vis[i]&&dis(a[d1],a[i])) { vis[i]=1; b[now]=i; dfs(i,now+1); vis[i]=0; } } } return;}int main(){ int i; while(~scanf("%d%lf",&n,&d)) { a[0].x=a[0].y=0; for(i=1; i<=n; i++) { scanf("%lf%lf",&a[i].x,&a[i].y); } if(d+7.5>=50) { printf("1\n"); return 0; } ansfirst=(double)inf; cnt=inf; memset(ans,0,sizeof(ans)); for(i=1; i<=n; i++) { memset(vis,0,sizeof(vis)); if(!vis[i]&&first(i)) { nowfirst=first1(i); if(safe(a[i])) { if(ansfirst>nowfirst) { ans[0]=i; cnt=1; ansfirst=nowfirst; } } vis[i]=1; memset(b,0,sizeof(b)); b[0]=i; dfs(i,1); } } if(cnt==inf) printf("0\n"); else { printf("%d\n",cnt+1); for(i=0; i<cnt; i++) { printf("%.0f %.0f\n",a[ans[i]].x,a[ans[i]].y); } } } return 0;}
0 0
- 07-图4. Saving James Bond - Hard Version (30)
- 06-图4. Saving James Bond - Hard Version (30)
- 06-图4. Saving James Bond - Hard Version (30)
- 06-图4. Saving James Bond - Hard Version (30)
- 06-图4. Saving James Bond - Hard Version (30)
- 07-图5 Saving James Bond - Hard Version (30分)
- 07-图5 Saving James Bond - Hard Version
- MOOC PTA 07-图5 Saving James Bond - Hard Version
- 07-图5 Saving James Bond - Hard Version
- 07-图5 Saving James Bond - Hard Version
- 07-图5 Saving James Bond - Hard Version
- Saving James Bond - Hard Version
- PAT 数据结构 06-图4. Saving James Bond - Hard Version (30)
- 06-图4. Saving James Bond - Hard Version (30)-DFS回溯
- 06-1. Saving James Bond - Hard Version (30) BFS
- 5-11 Saving James Bond - Hard Version (30分)
- PAT--Saving James Bond - Hard Version
- Saving James Bond - Easy Version
- perl regex 取一些匹配字符串
- 第2章 9
- .NET批量大数据插入性能分析及比较(2.普通插入与拼接sql批量插入)
- cglib
- HTML中引号多层嵌套的问题
- 07-图4. Saving James Bond - Hard Version (30)
- unity 工程编译顺序(转)
- Android数据存储(1)——File
- CMake 命令
- Leetcode-median of two sorted arrays
- 2015-05-06python-web攻略(1)套接字-IPv4-简单的客户端服务器编程
- 灰度图像的对比度动态范围压缩
- php使用curl发起http请求
- 解读高指数下的投资机会