标签:
题意:给你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