51nod 1524 可除图的最大团(DP)
2017-09-15 21:57
204 查看
1524 可除图的最大团
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
对于一般的图,最大团问题是一个NP-难的问题。然而,对于一些特殊的图,最大团问题可以有比较有效的解决方案。
关于最大团问题的概念,请百度之。^_^
在一个正整数集合A上定义可除图。 A = {a1, a2, ..., an} ,图上的顶点就是集合A中的数字。两个数字 ai 和 aj (i ≠ j) 之间有一条边的条件是 ai 能够被 aj 整除,或者 aj 能够被 ai 整除.
现在给定一个正整数集A,请找出这个集合所确定的可除图的最大团。
样例解释:在这个例子中,最大团是3,可以选择 {3,6,18}。
Input
Output
Input示例
Output示例
System Message (题目提供者)
Visual C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里
允许其他 AC 的用户查看此代码,分享代码才能查看别人的代码并有机会获得勋章
dp[i]:表示以数字i作为最大团中的最大数值的最大团大小,然后直接暴力暴力就好了
题目来源: CodeForces
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
对于一般的图,最大团问题是一个NP-难的问题。然而,对于一些特殊的图,最大团问题可以有比较有效的解决方案。
关于最大团问题的概念,请百度之。^_^
在一个正整数集合A上定义可除图。 A = {a1, a2, ..., an} ,图上的顶点就是集合A中的数字。两个数字 ai 和 aj (i ≠ j) 之间有一条边的条件是 ai 能够被 aj 整除,或者 aj 能够被 ai 整除.
现在给定一个正整数集A,请找出这个集合所确定的可除图的最大团。
样例解释:在这个例子中,最大团是3,可以选择 {3,6,18}。
Input
单组测试数据。 第一行有一个整数n (1≤n≤10^6),表示A的大小。 第二行有n个不一样的整数 a1,a2,...,an (1≤ai≤10^6),表示A中的元素。
Output
输出一个整数,表示最大团中的点数。
Input示例
样例输入1 8 3 4 6 8 10 18 21 24
Output示例
样例输出1 3
System Message (题目提供者)
Visual C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里
允许其他 AC 的用户查看此代码,分享代码才能查看别人的代码并有机会获得勋章
dp[i]:表示以数字i作为最大团中的最大数值的最大团大小,然后直接暴力暴力就好了
#include<set> #include<map> #include<stack> #include<queue> #include<vector> #include<string> #include<math.h> #include<stdio.h> #include<iostream> #include<string.h> #include<stdlib.h> #include<algorithm> #include<functional> using namespace std; #define ll long long #define inf 1000000000 #define mod 1000000007 #define maxn 1000050 #define lowbit(x) (x&-x) #define eps 1e-9 int a[maxn],dp[maxn]; int main(void) { int n,i,j,x,ans=0; scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+n+1); for(i=1;i<=n;i++) { x=a[i]; dp[x]++; for(j=2*x;j<=1000000;j+=x) dp[j]=max(dp[j],dp[x]); } for(i=1;i<=1000000;i++) ans=max(ans,dp[i]); printf("%d\n",ans); return 0; }
相关文章推荐
- 51nod 1524 可除图的最大团 dp
- 51nod 1524 可除图的最大团【dp】
- 51nod-1524 可除图的最大团(DP)
- 51nod 1270 数组的最大代价(dp好题)
- 51nod 1524 可除图的最大团
- 51nod 1049 最大子段和(基础dp)
- 51nod 1050 循环数组最大子段和 (dp)
- 51nod 1049 1050 1051 (循环数组)最大子段(子矩阵)和(dp)
- 【DP】51Nod 1052 最大M子段和
- 51nod-dp入门-最大子矩阵和
- 【51Nod】1270 - 数组的最大代价(dp)
- 51NOD 最大子字段和问题(DP入门)
- 51Nod 1277 字符串中的最大值【Dp+set_next】
- 51Nod 1049 最大子段和(DP动态规划)
- 51nod-1524 可除图的最大团
- 51nod_1049 最大子段和(简单DP)
- 【dp】51nod 1052 最大M子段和
- 51nod 1270 数组的最大代价 (DP_好题)
- 51nod 1050 循环数组最大子段和(基础dp)
- 51nod 1051 最大子矩阵和 (dp_good)