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

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

Catch That Cow--bfs 與 優化

2019-11-14 11:35:56
字體:
來源:轉載
供稿:網友

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 解法

這里寫圖片描述


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰顺县| 霍邱县| 西青区| 双鸭山市| 察隅县| 博白县| 安义县| 呼伦贝尔市| 招远市| 福海县| 资兴市| 乌拉特中旗| 巩留县| 颍上县| 长白| 岳普湖县| 米易县| 安福县| 四子王旗| 广西| 靖安县| 泸州市| 喀喇| 新乡县| 积石山| 蒙城县| 新安县| 炉霍县| 额济纳旗| 绥中县| 大丰市| 公安县| 虞城县| 宜昌市| 三门县| 大洼县| 邵东县| 翼城县| 永康市| 潢川县| 嘉祥县|