码迷,mamicode.com
首页 > 其他好文 > 详细

9.28-10.04

时间:2015-09-28 10:03:31      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:

//主要是图算法方面的, BFS. DFS. 生成树. 最短路径. 二分图. 最大流. 差分约束之类。

1.Catch That Cow

技术分享
 1 //直接BFS即可。 注意n>k的情况
 2 #include <iostream>
 3 #include <string>
 4 #include <cstdio>
 5 #include <cstring>
 6 #include <algorithm>
 7 #include <queue>
 8 #include <vector>
 9 #include <set>
10 #include <map>
11 #include <cstdlib>
12 
13 using namespace std;
14 
15 int n, k;
16 
17 int main()
18 {
19     int ans = 1000000000;
20     while (~scanf("%d%d", &n, &k))
21     {
22         ans = abs(n-k);
23         if (n >= k)
24         {
25             printf("%d\n", ans);
26             continue;
27         }
28         queue<pair<int, int> > qu;
29         while (!qu.empty()) qu.pop();
30         set<int> st;
31         qu.push(make_pair(n, 0));
32         st.insert(n);
33         while (!qu.empty())
34         {
35             int fir = qu.front().first;
36             int sec = qu.front().second;
37             if (ans <= sec) break;
38             if (fir == k)
39             {
40                 ans = sec;
41                 break;
42             }
43             else if (fir < k)
44             {
45                 if (st.count(fir-1) == 0) qu.push(make_pair(fir-1, sec+1)), st.insert(fir-1);
46                 if (st.count(fir*2) == 0) qu.push(make_pair(2*fir, sec+1)), st.insert(2*fir);
47                 if (st.count(fir+1) == 0) qu.push(make_pair(fir+1, sec+1)), st.insert(fir+1);
48             }
49             else ans = min(fir-k+sec, ans);
50             qu.pop();
51         }
52         printf("%d\n", ans);
53     }
54         
55     return 0;
56 }
View Code

 

9.28-10.04

标签:

原文地址:http://www.cnblogs.com/JustForCS/p/4843281.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!