国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Catch That Cow--bfs 與 優化

2019-11-14 12:30:14
字體:
來源:轉載
供稿:網友

Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a number line and the cow is at a point K (0 ≤ K ≤ 100,000) on the same number line. Farmer John has two modes of transportation: walking and teleporting.

Walking: FJ can move from any point X to the points X - 1 or X + 1 in a single minuteTeleporting: FJ can move from any point X to the point 2 × X in a single minute.

If the cow, unaware of its pursuit, does not move at all, how long does it take for Farmer John to retrieve it?

Input

Line 1: Two space-separated integers: N and K

Output

Line 1: The least amount of time, in minutes, it takes for Farmer John to catch the fugitive cow.

Sample Input

5 17

Sample Output

4

Hint

The fastest way for Farmer John to reach the fugitive cow is to move along the following path: 5-10-9-18-17, which takes 4 minutes.

解題報告

最小操作問題,典型用bfs,只是bfs 數據量指數增長會超內存,所以我們要想辦法優化。

這個題的有效數據其實就是在[0,2 * K]內,最多2 * K個,所以去除重復數據后的有效數據也就2 * K個,如何去除重復,用bool vis[]記錄是否訪問,后訪問的都是無效的數據,沒必要加入隊列,那么復雜度就是O(K)了

//BFS Memory Limit Exceeded#include<stdio.h>#include<queue>using namespace std;int N,K,ans;int main(){ queue<pair<int,int> > que; while(~scanf("%d%d",&N,&K)){ que.push(make_pair(N,0)); while(true){ int s=que.front().first,t=que.front().second;que.pop(); if(s==K){ 對上面代碼優化后

//Accepted 1028kb 32ms#include<stdio.h>#include<string.h>#include<queue>using namespace std;int N,K,ans;queue<pair<int,int> > que;bool vis[200010];int main(){ while(~scanf("%d%d",&N,&K)){ que.push(make_pair(N,0)); memset(vis,0,sizeof(vis)); while(true){ int s=que.front().first,t=que.front().second;que.pop(); if(s==K){ printf("%d/n",t); break; }t++; if(s<K){ if(!vis[s*2]){ que.push(make_pair(s*2,t)); vis[s*2]=true; } if(!vis[s+1]){ que.push(make_pair(s+1,t)); vis[s+1]=true; } } if(s>0&&!vis[s-1]){ que.push(make_pair(s-1,t)); vis[s-1]=true; } } while(!que.empty()) que.pop(); } return 0;}

某神dfs 解法

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 元谋县| 榆中县| 彭泽县| 金坛市| 绥化市| 余姚市| 宝清县| 新和县| 普洱| 武汉市| 巩留县| 永年县| 嘉峪关市| 安阳县| 鹤壁市| 安丘市| 水城县| 会理县| 百色市| 东阳市| 阿瓦提县| 麦盖提县| 广州市| 忻州市| 苗栗县| 阳原县| 津市市| 榆社县| 汝州市| 阿克苏市| 林周县| 响水县| 庄河市| 万源市| 盐亭县| 长乐市| 镇康县| 潼关县| 虹口区| 松滋市| 晋江市|