题目链接:http://codeforces.com/problemset/problem/264/B 题目大意:给定一个数列a1,a2,a3,a4,……,an(数据保证ai严格递增,n<=10^5),求最长的good序列长度:①序列严格递增  ②序列相邻两数不能互素.   题目乍一看好像是nlogn二分+DP的最长上升子序列,但其实这题和LIS一点儿关系都没有……因为数列本身就是严格递增的. 但是此题还需要借鉴LIS的思想,独特的是我们把素因子作为DP的状态,c[pi]表示前面以素数pi为因子的数结尾的最长序列的长度,f[i]表示以第i个数结尾的最长序列的长度。然后我们从左到右扫描序列,每次对当前第i个数分解素因子p1,p2,p3,……pn,找到其中c[pi]最大的,那么我们把此数连到该序列尾便形成了以该数为结尾的最长的good序列。注意完了之后还需要再更新各c[pi]。


#include
#include
#include
#include
using namespace std;
#define MAX 100010
int a[MAX],f[MAX],c[MAX];
bool noprime[MAX];
vector  prime;
int gcd(int a, int b){return b?gcd(b, a%b):a;
}
void Prime(){for (int i = 2; i <= 100000; i ++){if (!noprime[i]){prime.push_back(i);}for (int j = 0; j < prime.size() && prime[j] * i <= 100000; j ++){noprime[prime[j]*i] = 1;if (i % prime[j] == 0)  break;}}
}
int main(){Prime();int n;cin >> n;for (int i = 0; i < n; i ++){cin >> a[i];int tmp = a[i];f[i] = 1;for (int j = 0; j < prime.size(); j ++){int p = prime[j];if (p * p > tmp)break;if (tmp % p == 0){f[i] = max(f[i], c[p] + 1);while(tmp % p == 0)tmp /= p;}}if (tmp > 1){f[i] = max(f[i], c[tmp] + 1);}for (int j = 0; j < prime.size(); j ++){int p = prime[j];if (p * p > a[i])break;if (a[i] % p == 0){c[p] = f[i];while(a[i] % p == 0)a[i] /= p;}}if (a[i] > 1){c[a[i]] = f[i];}}int maxn = 1;for (int i = 0; i < n; i ++)if (f[i] > maxn)maxn = f[i];cout << maxn << endl;
}

转载于:https://www.cnblogs.com/AbandonZHANG/archive/2013/01/21/4114202.html

Codeforces 264B Good Sequences ★ (分解素因子+DP)相关推荐

  1. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  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 148D. Bag of mice(概率dp)

    Codeforces 148D. Bag of mice(概率dp) Description The dragon and the princess are arguing about what to ...

  5. 7-2 分解素因子 (10 分)

    7-2 分解素因子 (10 分) 题目 假设n是一个正整数,它的值不超过1000000,请编写一个程序,将n分解为若干个素数的乘积. 输入格式 首先输入一个正整数T,表示测试数据的组数,然后是T组测试 ...

  6. Codeforces - 1166D - Cute Sequences

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

  7. Codeforces Round #450 (Div. 2)D. Unusual Sequences[数论][组合数学][dp II]

    题目:http://codeforces.com/contest/900/problem/D 题意:找到加和为m的且gcd为n的数列种类数 分析:可以转化为求gcd为1的加和为m/n的种类数,假设有m ...

  8. CodeForces - 1497E2 Square-free division (hard version)(dp+数论)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在最多可以修改 kkk 个数字为任意数值,现在问最少可以将数列划分成多少个连续的数列,使得每一个单独的段中,任意两个数的乘积都不能是完全 ...

  9. Codeforces 1276D/1259G Tree Elimination (树形DP)

    题目链接 http://codeforces.com/contest/1276/problem/D 题解 我什么DP都不会做,吃枣药丸-- 设\(f_{u,j}\)表示\(u\)子树内,\(j=0\) ...

最新文章

  1. ubuntu20安装mysql8.0.28
  2. python怎么读取txt文件数据保存数组中-python将txt等文件中的数据读为numpy数组的方法...
  3. WinForm中给DataGridView添加 自动编号
  4. 实验五 编写、调试具有多个段的程序
  5. 面对对象课程设计报告java,面向对象编程 JAVA编程综合实验报告.doc
  6. Java hibernate假外键_java – Hibernate:没有实体类的外键,只能通过id
  7. 怎么查看eclipse的版本号
  8. 用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传...
  9. weblogic linux sun/awt/X11GraphicsEnvironment
  10. ECS之Component组件
  11. HRM人力资源系统-Day07
  12. linux麒麟镜像,银河麒麟、优麒麟的软件源和镜像站
  13. Mac 系统mysql密码重置
  14. STL中Vector的内存分配机制
  15. Tiny 4412 lcd 驱动分析
  16. android checkbox 文字和图标间距,CheckBox选择框和文字设置间距
  17. LDA与QDA分类数据的简单应用(python)
  18. #9733;一名“标题党”自我修炼的10…
  19. Retrofit2源码解读
  20. 九齐单片机 NY8B062D 之TIM0的使用

热门文章

  1. 【视频】v-bind的使用
  2. 查看systemctl或service启动服务日志
  3. VS2015编译MuPDF 1.13.0源码(详细)
  4. C++ warning:’xxx‘ has no out-of-line virtual method definitions...
  5. QT pro文件解析
  6. Mac电脑设置adb环境变量
  7. 架构与设计 之一 C 嵌入式设计模式(Design Patterns for Embedded Systems in C)的学习记录
  8. 编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。
  9. 启明云端分享|ESP32-S3开发环境搭建,这里我们会介绍两个比较常用的开发环境搭建:WINDOWS\LINUX
  10. 很多初接触乐鑫ESP32/ESP8266 模块时,都不清楚怎么为 ESP32、ESP8266 系列模组烧录固件呢?这里以启明云端WT8266-S5(ESP-12F)和ESP32-WROOM模块为例说明