这道题折腾了好长时间,必须写一下。

大致题意:主要提议是要在一个数组种找一个数列满足这个数列相邻两个数之间一定有约束即(gcd>1)。

思路:一看就是dp的题目,数据1e5显然不能暴力。所以类似于最长上升子序列的思想,我用了一个数组表示当前约束为prime[i]最大连续长度。

接下来就好做了dp[i] = max(tag[k])k为num[i]所有约数。每次状态转移完更新tag数组就是将他所有的约束都更新为当前最大值。

最后扫描一边dp数组最大值即为答案。注意所有的约数必须都为素数,我一开始就错在了这里,然后就是编程上注意,我好tle了一次。

代码如下:

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <cstdlib>
 5 #include <cmath>
 6 #include <algorithm>
 7 #define LEN 1001000
 8
 9 using namespace std;
10
11 int isprime[LEN], prime[LEN], top;
12 int n, dp[LEN], tag[LEN], num[LEN];
13
14 void makeprime()
15 {
16     memset(prime, 0, sizeof prime);
17     memset(isprime, 0, sizeof isprime);
18     top = 0;
19     for(int i=2; i<100010; i++){
20         if(isprime[i]==0) prime[top++] = i;
21         for(int j=0; j<top && prime[j]*i<100100; j++){
22             isprime[prime[j]*i] = 1;
23         }
24     }
25 }
26
27 int solve(int x)
28 {
29     int ret = 0;
30     for(int i=0; x-1; i++){
31         if(x%prime[i]==0) ret = max(ret, tag[prime[i]]);
32         while(x%prime[i]==0 && x)x = x/prime[i];
33     }
34     return ret;
35 }
36
37 void reflesh(int x, int val)
38 {
39     for(int i=0; x-1; i++){
40         if(x%prime[i]==0) tag[prime[i]] = max(tag[prime[i]], val);
41         while(x%prime[i]==0 && x)x = x/prime[i];
42     }
43 }
44
45 int main()
46 {
47 //    freopen("in.txt", "r", stdin);
48 //    freopen("out.txt", "w", stdout);
49
50     while(scanf("%d", &n)!=EOF){
51         makeprime();
52         memset(dp, 0, sizeof dp);
53         memset(tag, 0, sizeof tag);
54         int ans = 0;
55         for(int i=0; i<n; i++){
56             scanf("%d", &num[i]);
57             dp[i] = solve(num[i])+1;
58             reflesh(num[i], dp[i]);
59             ans = max(ans, dp[i]);
60         }
61         printf("%d\n", ans);
62     }
63     return 0;
64 }

View Code

转载于:https://www.cnblogs.com/shu-xiaohao/p/3434576.html

Codeforces 264B - Good Sequences相关推荐

  1. Codeforces 264B Good Sequences ★ (分解素因子+DP)

    题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给定一个数列a1,a2,a3,a4,--,an(数据保证ai严格递增,n<=10 ...

  2. CodeForces - 1513B AND Sequences

    B. AND Sequences time limit per test: 2 seconds memory limit per test: 256 megabytes A sequence of n ...

  3. Codeforces - DZY Loves Sequences

    题目链接:Codeforces - DZY Loves Sequences 做一个前后缀连续 LIS ,然后枚举每个位置即可. 注意细节. AC代码: #pragma GCC optimize(&qu ...

  4. Codeforces - 1166D - Cute Sequences

    Codeforces - 1166D - Cute Sequences 地址 http://codeforces.com/contest/1166/problem/D 原文地址 https://www ...

  5. Codeforces 900D Unusual Sequences:记忆化搜索

    题目链接:http://codeforces.com/problemset/problem/900/D 题意: 给定x,y,问你有多少个数列a满足gcd(a[i]) = x 且 ∑(a[i]) = y ...

  6. codeforces 900D. Unusual Sequences(莫比乌斯反演)

    900D. Unusual Sequences(莫比乌斯反演) 题目链接:传送门 题意: 给出 xxx 和 yyy ,求序列形如 a1,a2..ana_1,a_2..a_na1​,a2​..an​ 满 ...

  7. 训练 CF 1700分 题解

    C o d e F o r c e s 264 B CodeForces 264B CodeForces264B G o o d S e q u e n c e s Good Sequences Go ...

  8. Codeforces Round #631 (Div. 2) D. Dreamoon Likes Sequences 思维 + 组合数学

    传送门 文章目录 题意: 思路: 题意: 给你d,modd,modd,mod,让你求能构造出如下序列aaa的个数模modmodmod: 思路: 首先可以发现aaa的长度不能超过log2dlog_2dl ...

  9. Vasya and Good Sequences (Codeforces Round #512) 后缀和

    Vasya and Good Sequences (Codeforces Round #512) 后缀和 嘛,蒟蒻第一次写blog,也是第一次用c++好好写程序,多多关照吧 原题: Vasya可以将一 ...

  10. Codeforces 447C - DZY Loves Sequences

    447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

最新文章

  1. js截屏 video_canvas与html5实现视频截图功能
  2. 一道有趣的C#考试题目
  3. 【Flutter】Flutter 拍照示例 ( Flutter 插件配置 | Flutter 插件源码示例 | iOS 应用配置 | Android 应用配置 )
  4. C++中IDispatch接口
  5. 访问index.php跳转,打开index.php后,跳转到/user/login.html
  6. linux编译动态库之fPIC
  7. 嗅探工具java_权宜之计 让迅雷5支持傲游2嗅探器来下载视频
  8. 告诉你三个实用的换性别特效软件
  9. SAP JCo BAPI的使用(刘欣) 2009-2-6
  10. cropper裁切图片并预览上传(1)
  11. html 纯白色,要一张全屏的空白的图(纯白色的)
  12. MIMO技术杂谈(三):知己知彼,百战不殆--信道信息的获取和应用
  13. 网易互联网产品运营管培生面试经历--从群面到终面面试经验分享
  14. WebDriver下载地址
  15. 已获万赞,最新Android通用流行框架大全
  16. python用百度云接口实现身份证识别
  17. 【鱼眼】M4/3用户对鱼眼镜头的误解(7.5mm的鱼眼镜头的等效焦距是12mm或15mm,但是依然是鱼眼镜头而不是广角镜头)
  18. 【MySQL】MySQL表的增删改查(进阶)
  19. Leetcode95. 不同的二叉搜索树 II(C语言)
  20. StackPanel布局

热门文章

  1. LINUX如何创建一个程序组
  2. 测试电脑电源是否正常的办法
  3. 管理新语:新员工进来,竟然连起码的技能培训都没有
  4. 感觉最近有多个机器人给吾博客评论
  5. zgc,JDK8有类似的shenandoah,华为移植到JDK11
  6. Package sqlite3 was not found in the pkg-config search path.add the directory containing `sqlite3.pc
  7. 编译OpenJDK8:NMAKE : fatal error U1077
  8. 梦到曦和二字与公司起名
  9. 解决办法:Cannot find the class file for org.apache.http.client.ClientProtocolException
  10. 领导公开对你有成见,关键在于是否影响公司决策