首页 > 其他 > 详细

VK Cup 2015 - Finals F. Clique in the Divisibility Graph

时间:2015-08-01 17:23:16      阅读:299      评论:0      收藏:0      [点我收藏+]

题目链接

题意:给你n个数,求一个最长子序列,要求是这个子序列中任意两个数,其中一个一定是另外一个的倍数

代码如下:

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
const int N = 1E6+10;
using namespace std;

int dp[N], a;

int main()
{
    int n, maxn;
    while(~scanf("%d", &n))
    {
        memset(dp, 0, sizeof(dp));
        maxn = 0;
        for(int i = 0; i < n; i++)
        {
            scanf("%d", &a);
            dp[a]++;
            maxn = max(maxn, dp[a]);
            for(int j = a * 2; j <= N; j += a)
                dp[j] = max(dp[j], dp[a]);
        }
        printf("%d\n", maxn);
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

VK Cup 2015 - Finals F. Clique in the Divisibility Graph

原文:http://blog.csdn.net/doris1104/article/details/47187261

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!