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

来源:互联网 发布:货运通软件下载 编辑:程序博客网 时间:2024/04/28 12:56

题目链接

题意:给你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);    }}


0 0
原创粉丝点击