小 C 非常喜欢数字。

这次,他得到了一个长度为 n 的正整数数列 A,第 i 项为 ai。

现在,小 C 想要找出来 A 中最长的子序列B = {b1, b2, · · · , bm},使得对于任意的二元组

(i, j),bi 和 bj 满足倍数关系. 。

小 C 突然不会最长不下降子序列了,于是找到了你来帮他求出最长的子序列的长度。

子序列:对于长度为 n 的数列 A,对于 B = {b1, b2, · · · , bm},若 b1 = ap1 , b2 = ap2 , · · · , bm =

apm,则必须要满足 1 ≤ p1 < p2 < · · · < pm ≤ n,这样的数列 B 称为 A 的子序列。其中子序

列 B 可以为空。

倍数关系:对于两个数 a, b,两者成倍数关系,即 a 能被 b 整除,或者 b 能被 a 整除,两

者至少一种成立。

输入格式:

共两行,第一行有一个正整数 n,表示数列 A 的长度;

第二行有 n 个正整数,第 i 个数表示 ai。

输出格式:

输出到文件 number.out 中。

仅一行一个数,表示子序列长度的最大值。

限制:

空间限制:512MByte
时间限制:2秒

样例:

输入:5
1 2 3 8 16
输出:4

提示:

样例 1 解释

最长子序列为 {1, 2, 8, 16},长度为 4。

测试点 N ai
1 =3 <=10^6
2 =8 <=10^6
3~4 <=20 <=10^6
5~6 <=5000 <=10^6
7~8 <=5*10^5 <=10^6
9~10 <=3*10^6 <=10^7

代码如下:

#include "iostream"
#include "algorithm"
#include "cstdio"
using namespace std;int n;
int orgNums[10000000];
int dp[10000000];
int maxxNum = 0;int maxx = 1;
int main(){scanf("%d",&n);int num;for (int i = 1; i <=n ; ++i) {scanf("%d",&num);orgNums[num]++;maxxNum = max(maxxNum,num);}dp[maxxNum] = orgNums[maxxNum];maxx = dp[maxxNum];for (int i = maxxNum-1; i >0 ; i--) {if(!orgNums[i]){continue;}dp[i] = orgNums[i];for (int k = 2; k <100&&k*i<=maxxNum ; ++k) {if(orgNums[k*i]){dp[i] = max(dp[i],orgNums[i]+dp[k*i]);maxx = max(maxx,dp[i]);}}}cout<<maxx;
}

代码写的稍微有些复杂,请各位提提意见!!

小 C 的数(number)(C++)相关推荐

  1. python获取word页数_使用Python的word文档的页数(Number of pages of a word document with Python)...

    使用Python的word文档的页数(Number of pages of a word document with Python) 有没有办法用Python有效地获得word文档(.doc,.doc ...

  2. 搭建属于自己的发卡小店-独角数卡

    搭建属于自己的发卡小店-独角数卡 一.首先给出大佬的 Git官方仓库 https://github.com/assimon/dujiaoka 我选用的是docker版本的部署,至于为什么选择这个,当然 ...

  3. T66099 小xzy的数对 题解

    T66099 小xzy的数对 题目背景 老师带同学参加表演,要求学生两两一组表演,但有些学生一起会发生冲突,现在老师想知道有多少组学生分到一起时不会发生冲突. 题目描述 学生发生冲突当且仅当他们身上的 ...

  4. 51nod 1479 小Y的数论题 (exgcd)

    1479 小Y的数论题 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 640 收藏 关注 小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及 ...

  5. 【快速搭建】属于自己的小店 -独角数卡-docker版本

    搭建属于的发卡小店-独角数卡 一.首先给出大佬的 Git官方仓库 https://github.com/assimon/dujiaoka 我选用的是docker版本的部署,至于为什么选择这个,当然是因 ...

  6. 20以内分数化小数表_数与代数之小数

    一.概念描述 现代数学:小数亦称十进小数,是实数的一种特殊的表现形式.所有分数都可以表示成小数,根据十进制的位值原则,把十进分数仿照整数的写法写成不带分母的形式,小数中的圆点叫作小数点,它是一个小数的 ...

  7. [小程序]两数比较(5种写法)

    两数比较5种写法 第一种写法 第二种方法 第三种方法 第四种方法 第五种方法 下面统一wxss格式是: /* pages/index/index.wxss */view {margin: 50rpx; ...

  8. Linux 显示行数 number

    一般模式下(摁下esc键,即返回到一般模式下)  输入:set nu  注意,上面的冒号也是要输入的内容 ​永久显示行数 vi /etc/vimrc :set number Linux登录时密码输入框 ...

  9. 无聊的小明来数1 (5 分)...按位与

    这道题是数十进制转二进制后有几个1,这边提供两种方法,一种是十进制除二判断奇偶累计1的个数(借用兄嘚的代码),一种是按位与的写法(俺最近学的哈哈哈). 下面是原题: 小明这几天非常无聊,于是乎他又给自 ...

  10. 51nod 1479 小Y的数论题

    小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得  (xa+yb) Mod m= ...

最新文章

  1. react控制组件的显示或隐藏, 根据state判断元素显示隐藏 , setState不实时生效解决方法
  2. 神策数据成为 Adjust 在中国首家数据分析合作伙伴
  3. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
  4. AntD 官网样例 InputRef报错原因
  5. 安装gem_Python安装第三方库及常见问题处理方法汇总
  6. android jni framework,Android Framework层的JNI机制(二)
  7. python查看包的路径_获取python及三方包的版本,安装路径等信息
  8. mysql配置文件my.cnf解析
  9. Python(一)缺点
  10. 同济大学Python程序设计基础 实验一:Python程序设计基础
  11. 什么是计算机?计算机的硬件系统组成有哪些?
  12. 计算机显卡驱动全部卸载,Win7彻底卸载NVIDIA显卡驱动程序的办法
  13. 流媒体技术基础-流媒体文件格式
  14. 数据分析/机器学习 350+ 数据集链接整理,免费下载点开就用
  15. UNIX时间戳的UTC(协调世界时)
  16. 新手主播在一对一视频直播平台更容易发展,轻松月入过万!
  17. 第三方支付(微信支付)支付流程分析
  18. 三季度企业付款及时性指数发布;北京写字楼供需失衡明年仍会加剧 | 美通企业日报...
  19. c#读取Excel表数据
  20. 单片机 TM4C123GXL 学习 例程

热门文章

  1. 左链接和右链接及内链接详解
  2. Weblogic配置和部署
  3. DB2事务日志使用经验
  4. 对比几个空地址“订阅”的结果
  5. zookeeper核心原理(Watcher、事件和状态)
  6. I.MX6 CAAM
  7. html css 怎么使img和a标签在一个行内元素中间对齐
  8. 给定一个序列,判断该序列是否为二叉树查找树的后序遍历序列
  9. FLC-Regular Grammar
  10. C#如何实现一个简单的流程图设计器