日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

07-图4. Saving James Bond - Hard Version (30)

發布時間:2023/12/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 07-图4. Saving James Bond - Hard Version (30) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本題測試點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; }

版權聲明:本文為博主原創文章,未經博主允許不得轉載。http://xiang578.top/

轉載于:https://www.cnblogs.com/xryz/p/4848004.html

總結

以上是生活随笔為你收集整理的07-图4. Saving James Bond - Hard Version (30)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。