VK Cup 2015 - Finals, online mirror

F. Clique in the Divisibility Graph

题目传送:Clique in the Divisibility Graph

解法:筛法+DP

AC代码:

#include <map>
#include <set>
#include <cmath>
#include <deque>
#include <queue>
#include <stack>
#include <cstdio>
#include <cctype>
#include <string>
#include <vector>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define LL long long
#define INF 0x7fffffff
using namespace std;

const int maxn = 1000005;

int dp[maxn];//dp[i]表示以i为结尾的数能够产生的最大size,状态转移是在筛法中进行的
int n, x;

int main() {
    cin >> n;
    for(int i = 0; i < n; i ++) {
        scanf("%d", &x);
        dp[x] = 1;
    }

    for(int i = 1; i < maxn; i ++) {
        if(dp[i] != 0)
        for(int j = 2 * i; j < maxn; j += i) {
            if(dp[j] != 0) {
                dp[j] = max(dp[j], dp[i] + 1);
            }
        }
    }

    int ans = 0;
    for(int i = 0;  i < maxn; i ++) {
        ans = max(ans, dp[i]);
    }

    cout << ans << endl;
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2025-01-17 15:36:20

VK Cup 2015 - Finals, online mirror的相关文章

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

题目链接 题意:给你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(~sc

Codeforces VK Cup 2015 Wild Card Round 1 (AB)

比赛链接:http://codeforces.com/contest/522 A. Reposts time limit per test:1 second memory limit per test:256 megabytes One day Polycarp published a funny picture in a social network making a poll about the color of his handle. Many of his friends started

Bubble Cup X - Finals [Online Mirror]

来自FallDream的博客,未经允许,请勿转载,谢谢. 组了个菜鸡队打cf上的ACM比赛 比较快做完了8题但是菜的抠脚罚时巨多,所以最后被顶到了19名(居然没出首页) 自己的号自从上次疯狂掉分就没动过了,感觉像是红名橙名大佬中的一股清流. A.奇怪的贪心,我写了一发结果挂了,题解见大爷博客 B.dp方程很容易列出来,然后写个矩阵乘法就行了. C.每个点的位置决定了两边的白色小三角形的面积,这个面积是关于位置的一次函数,所以排序之后贪心就行了. D.二分+网络流判定 E.dp方程容易列出,然后换

Bubble Cup X - Finals [Online Mirror] B. Neural Network country 矩阵快速幂加速转移

B. Neural Network country time limit per test 2 seconds memory limit per test 256 megabytes Due to the recent popularity of the Deep learning new countries are starting to look like Neural Networks. That is, the countries are being built deep with ma

VK Cup 2015 - Round 1 E. Rooks and Rectangles 线段树 定点修改,区间最小值

E. Rooks and Rectangles Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.com/problemset/problem/524/E Description Polycarpus has a chessboard of size n × m, where k rooks are placed. Polycarpus hasn't yet invented the rules of the game

VK Cup 2015 - Round 2 B. Work Group

题解: 树形dp 首先开始做时我以为只要贪心选取就可以了... 后来发现根节点可以不用选,而选和为奇数的满足条件的子节点. 所以需要重新构建状态 dp[u][0]表示满足条件的以u为根节点的子树中,节点数为偶数的最大值 dp[u][0]表示满足条件的以u为根节点的子树中,节点数为奇数的最大值 最开始不选根节点.dp[u][0]=0,dp[u][1]为-INF(不存在) 每次加子节点v时 1.偶可以由偶(u)+偶(v),奇(u)+奇(v)更新 2.奇可以由奇(u)+奇(v),奇(u)+奇(v)更新

Codeforces VK Cup 2015 A.And Yet Another Bracket Sequence(后缀数组+平衡树+字符串)

这题做得比较复杂..应该有更好的做法 题目大意: 有一个括号序列,可以对其进行两种操作: ·        向里面加一个括号,可以在开头,在结尾,在两个括号之间加. ·        对当前括号序列进行循环移动,即把最后一个括号拿到开头来. 上述两种操作可以做任意次,要求添加最少的括号使得原序列变成一个合法括号序列.如果有多种可能,输出字典序最小的那一个."(" < ")". 题解: 首先计算左括号和右括号的数量,可以知道,不妨假设左括号的数量大于右括号 那么

Bubble Cup 11 - Finals [Online Mirror, Div. 1] 体验记 + 部分题解

原文链接https://www.cnblogs.com/zhouzhendong/p/CF1045.html 体验?? 陈老爷(cly_none) 带我们飞. 遥遥领先的yzy(yzyyylx) nb . fx 口胡大法好. 哈哈.最后7~8分钟卡常 5974ms 过一道 6000ms 题. 陈老爷切掉了 A D J . yzy 干掉了 C 和 G . fx 半程口胡.中途有事. zzd 菜鸡贡献10多发罚时,导致队伍罚时爆炸.这个菜鸡zzd只 AC 了 I B H ,并在最后7~8分钟把陈老爷

Codeforces Round #423 (Div. 2, rated, based on VK Cup Finals) E. DNA Evolution 树状数组

E. DNA Evolution time limit per test 2 seconds memory limit per test 512 megabytes input standard input output standard output Everyone knows that DNA strands consist of nucleotides. There are four types of nucleotides: "A", "T", "