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

acdream 1025 简单dp

时间:2015-08-01 21:48:10      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

最基本的在DAG上求最短路。

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 
 6 const int INF = 999999;
 7 const int N = 100001;
 8 int dp[N];
 9 
10 int main ()
11 {
12     int a, b;
13     while ( scanf("%d%d", &a, &b) != EOF )
14     {
15         if ( a > b )
16         {
17             printf("-1\n");
18             continue;
19         }
20         dp[a] = 0;
21         for ( int i = a + 1; i <= b; i++ )
22         {
23             dp[i] = INF;
24         }    
25         for ( int i = a; i < b; i++ )
26         {
27             int j;
28             for ( j = 1; j * j < i; j++ )
29             {
30                 if ( i % j ) continue;
31                 int x = i + j;
32                 if ( x <= b )
33                 {
34                     dp[x] = min( dp[x], dp[i] + 1 );
35                 }
36                 int y = i + i / j;
37                 if ( y <= b )
38                 {
39                     dp[y] = min( dp[y], dp[i] + 1 );
40                 }
41             }
42             if ( i % j == 0 )
43             {
44                 int z = i + j;
45                 if ( z <= b )
46                 {
47                     dp[z] = min( dp[z], dp[i] + 1 );
48                 }
49             }
50         }
51         printf("%d\n", dp[b]);
52     }
53     return 0;
54 }

 

acdream 1025 简单dp

标签:

原文地址:http://www.cnblogs.com/huoxiayu/p/4694606.html

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