国产探花免费观看_亚洲丰满少妇自慰呻吟_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 解法

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄大仙区| 东台市| 孝昌县| 玉环县| 洛阳市| 监利县| 郴州市| 彝良县| 顺昌县| 沙河市| 呈贡县| 石河子市| 万源市| 太仓市| 台前县| 自治县| 福泉市| 邢台市| 清流县| 当涂县| 梨树县| 安徽省| 南投市| 宝丰县| 威信县| 石楼县| 宜川县| 长沙县| 乌拉特中旗| 广灵县| 衢州市| 剑阁县| 浮山县| 永济市| 当涂县| 怀柔区| 高安市| 静海县| 卓资县| 鹤山市| 察雅县|