【CF 566F】 Clique in the Divisibility Graph
最大团模型的dp
数做点 能约分的一对数间有路 问最大团(最大完全子图)
用最长公共子序列做法 dp出最长路 由于一个数约数的约数也是这个数的约数 所以只要能连起来就是个完全子图
代码如下:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <cmath>
#define LL long long
#define INF 0x3f3f3f3f
using namespace std;
int dp[1111111];
int main()
{
memset(dp,0,sizeof(dp));
int n,x,mm = 0,i,j;
scanf("%d",&n);
for(i = 0; i < n; ++i)
{
scanf("%d",&x);
mm = max(mm,dp[x]+1);
for(j = 2; j*x <= 1000000; ++j)
{
dp[j*x] = max(dp[j*x],dp[x]+1);
}
dp[x]++;
}
printf("%d\n",mm);
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-19 04:22:39