O(1) 的小乐

Job Hunting

公告

记录我的生活和工作。。。
<2012年6月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

  • 随笔 - 182
  • 文章 - 1
  • 评论 - 41
  • 引用 - 0

留言簿(10)

随笔分类(70)

随笔档案(182)

文章档案(1)

如影随形

搜索

  •  

最新随笔

最新评论

阅读排行榜

评论排行榜

SRM 302 U

DIV 2 1000

给定两个整数,N,M N可以到达N+N的约数,求从N到达M的最短路径?

实质上就是一个BFS问题,复杂度就是O(sqrt(M)*M);

int dp[100020];
class DivisorInc
{
        public:
        int countOperations(int N, int M)
        {
            for(int i=N; i<=M; i++) dp[i]= M+M;
            dp[N]=0;
            for(int i=N; i<=M; i++)
            {
                for(int j=2; j*j<=i; j++)
                {
                    if(i%j==0)
                    {
                        if(i+j<=M) dp[i+j] = min(dp[i+j], dp[i]+1);
                        if(i+ i/j<=M) dp[i+i/j] =min(dp[i+i/j], dp[i]+1);
                    }
                }
            }
            if(dp[M] > M) return -1;
            else return dp[M];

        }
};
 
 

posted on 2012-06-01 15:56 Sosi 阅读(92) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


统计系统