小 C 的数(number)(C++)
小 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++)相关推荐
- 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 ...
- 搭建属于自己的发卡小店-独角数卡
搭建属于自己的发卡小店-独角数卡 一.首先给出大佬的 Git官方仓库 https://github.com/assimon/dujiaoka 我选用的是docker版本的部署,至于为什么选择这个,当然 ...
- T66099 小xzy的数对 题解
T66099 小xzy的数对 题目背景 老师带同学参加表演,要求学生两两一组表演,但有些学生一起会发生冲突,现在老师想知道有多少组学生分到一起时不会发生冲突. 题目描述 学生发生冲突当且仅当他们身上的 ...
- 51nod 1479 小Y的数论题 (exgcd)
1479 小Y的数论题 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 640 收藏 关注 小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及 ...
- 【快速搭建】属于自己的小店 -独角数卡-docker版本
搭建属于的发卡小店-独角数卡 一.首先给出大佬的 Git官方仓库 https://github.com/assimon/dujiaoka 我选用的是docker版本的部署,至于为什么选择这个,当然是因 ...
- 20以内分数化小数表_数与代数之小数
一.概念描述 现代数学:小数亦称十进小数,是实数的一种特殊的表现形式.所有分数都可以表示成小数,根据十进制的位值原则,把十进分数仿照整数的写法写成不带分母的形式,小数中的圆点叫作小数点,它是一个小数的 ...
- [小程序]两数比较(5种写法)
两数比较5种写法 第一种写法 第二种方法 第三种方法 第四种方法 第五种方法 下面统一wxss格式是: /* pages/index/index.wxss */view {margin: 50rpx; ...
- Linux 显示行数 number
一般模式下(摁下esc键,即返回到一般模式下) 输入:set nu 注意,上面的冒号也是要输入的内容 永久显示行数 vi /etc/vimrc :set number Linux登录时密码输入框 ...
- 无聊的小明来数1 (5 分)...按位与
这道题是数十进制转二进制后有几个1,这边提供两种方法,一种是十进制除二判断奇偶累计1的个数(借用兄嘚的代码),一种是按位与的写法(俺最近学的哈哈哈). 下面是原题: 小明这几天非常无聊,于是乎他又给自 ...
- 51nod 1479 小Y的数论题
小Y喜欢研究数论,并且喜欢提一些奇怪的问题. 这天他找了三个两两互质的数a, b, c,以及另一个数m, 现在他希望找到三个(0, m)范围内的整数x, y, z,使得 (xa+yb) Mod m= ...
最新文章
- react控制组件的显示或隐藏, 根据state判断元素显示隐藏 , setState不实时生效解决方法
- 神策数据成为 Adjust 在中国首家数据分析合作伙伴
- Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
- AntD 官网样例 InputRef报错原因
- 安装gem_Python安装第三方库及常见问题处理方法汇总
- android jni framework,Android Framework层的JNI机制(二)
- python查看包的路径_获取python及三方包的版本,安装路径等信息
- mysql配置文件my.cnf解析
- Python(一)缺点
- 同济大学Python程序设计基础 实验一:Python程序设计基础
- 什么是计算机?计算机的硬件系统组成有哪些?
- 计算机显卡驱动全部卸载,Win7彻底卸载NVIDIA显卡驱动程序的办法
- 流媒体技术基础-流媒体文件格式
- 数据分析/机器学习 350+ 数据集链接整理,免费下载点开就用
- UNIX时间戳的UTC(协调世界时)
- 新手主播在一对一视频直播平台更容易发展,轻松月入过万!
- 第三方支付(微信支付)支付流程分析
- 三季度企业付款及时性指数发布;北京写字楼供需失衡明年仍会加剧 | 美通企业日报...
- c#读取Excel表数据
- 单片机 TM4C123GXL 学习 例程