VK Cup 2015 - Finals, online mirror F. Clique in the Divisibility Graph 数论
来源:互联网 发布:编程的双引号怎么打 编辑:程序博客网 时间:2024/04/29 20:57
As you must know, the maximum clique problem in an arbitrary graph is NP-hard. Nevertheless, for some graphs of specific kinds it can be solved effectively.
Just in case, let us remind you that a clique in a non-directed graph is a subset of the vertices of a graph, such that any two vertices of this subset are connected by an edge. In particular, an empty set of vertexes and a set consisting of a single vertex, are cliques.
Let's define a divisibility graph for a set of positive integers A = {a1, a2, ..., an} as follows. The vertices of the given graph are numbers from set A, and two numbers ai and aj (i ≠ j) are connected by an edge if and only if either ai is divisible by aj, or aj is divisible by ai.
You are given a set of non-negative integers A. Determine the size of a maximum clique in a divisibility graph for set A.
The first line contains integer n (1 ≤ n ≤ 106), that sets the size of set A.
The second line contains n distinct positive integers a1, a2, ..., an (1 ≤ ai ≤ 106) — elements of subset A. The numbers in the line follow in the ascending order.
Print a single number — the maximum size of a clique in a divisibility graph for set A.
83 4 6 8 10 18 21 24
3
In the first sample test a clique of size 3 is, for example, a subset of vertexes {3, 6, 18}. A clique of a larger size doesn't exist in this graph.
题意,要求,给出一个数组序列,要求最长的成倍增长的序列如 2 6 24 96等。
因为n比较小,所以用dp做,dp[i]表示,i所能形成的最长序列,
则dp[i] = max(dp[i],dp[j] + 1) i % j == 0;只要从前往后推就可以了。
复杂度为n + n /2 + n /3 + n/4 .... = n * log(n);也就可以了
#define N 1000050#define M 100005#define maxn 205#define MOD 1000000000000000007int n,pri[N],dp[N],num[N];void solve(){ dp[1] = num[1];for(int i = 1;i<=pri[n];i++){for(int j = i + i;j<= pri[n];j+=i) { dp[j] = max(dp[j],dp[i] + num[j]); }}int ans = 0;for (int i = 1; i <= n; i++){ans = max(ans,dp[pri[i]]);}printf("%d\n",ans);}int main(){ while(S(n)!=EOF) { fill(dp,0); fill(num,0); for(int i = 1;i<=n;i++) S(pri[i]),num[pri[i]]++; solve(); } return 0;}
- VK Cup 2015 - Finals, online mirror F. Clique in the Divisibility Graph 数论
- VK Cup 2015 - Finals, online mirror F - Clique in the Divisibility Graph dp
- VK Cup 2015 - Finals F. Clique in the Divisibility Graph
- VK Cup 2015 - Finals, online mirror
- codeforces 566F F. Clique in the Divisibility Graph(dp)
- 【CF 566F】 Clique in the Divisibility Graph
- Codeforces 566 F. Clique in the Divisibility Graph
- codeforces 566F. Clique in the Divisibility Graph dp
- Clique in the Divisibility Graph
- VK Cup 2015 - Finals, online mirror D. Restructuring Company 并查集 stl应用
- Matching Names(Trie树)-(VK Cup 2015 - Finals, online mirror)
- VK Cup 2015 - Finals, online mirror D. Restructuring Company 并查集 set 二分
- 周赛-Clique in the Divisibility Graph
- [CodeForces 566F] Clique in the Divisibility Graph (记忆化搜索)
- CF Clique in the Divisibility Graph (DP)
- Bubble Cup 8 - Finals [Online Mirror]
- Bubble Cup 9 - Finals [Online Mirror] 题解
- VK Cup 2015 - Round 1 (unofficial online mirror, Div. 1 only)E---The Art of Dealing with ATM
- XE8 & IOS开发之免费证书真机调试:开发证书、AppID、开发授权profile的申请,附Debug真机调试演示
- 从angularJS看MVVM
- UILabel
- 2016 数据的交换输出
- iBatis开发详解(8)------------使用XML
- VK Cup 2015 - Finals, online mirror F. Clique in the Divisibility Graph 数论
- iOS UI02.2_UIView,UILabel,UIButton,UItextfield归纳
- android图片文件的路径地址与Uri的相互转换
- UIButton
- 创建文件有个问号
- iBatis开发详解(9)-----------查询复杂集合
- iOS-代理委托的使用
- HDOJ--2141 Can you find it?(包含题意)
- 主子报表多数据源的处理