CF264B Good Sequences
Description:
松鼠丽丝特别喜欢n个她称之为“好整数”的整数:a1,a2,……,an。(会输入)
现在,她对“好序列”很感兴趣。如果一个序列x1,x2,...,xk能够满足一下三个条件,那就是一个“好序列”:
1.该序列是严格上升的,即x[i]<x[i+1](1<=i<=k-1)
2.任意两个相邻的元素是非互质的,即gcd(x[i],x[i+1])>1 (1<=i<=k-1) (gcd即最大公约数)
3.所有的数字都是“好整数”
现在,请你找出长度最长的“好序列”
暴力DP解法:(当然不是AC做法)
就是很像导弹拦截
dp[i]表示以编号为i的好数结尾的最长好序列
枚举判断转移就OK啦
#include<iostream>
#include<cstdio>
#include<algorithm>
#define R register
#define go(i,a,b) for(R int i=a;i<=b;i++)
#define ll long long
#define M 100000
using namespace std;
int read()
{
int x=,y=;char c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,a[M],dp[M],ans;
int gcd(int x,int y)
{
return x%y==?y:gcd(y,x%y);
}
int main()
{
n=read();
go(i,,n) a[i]=read(),dp[i]=;
sort(a+,a+n+);
go(i,,n)
{
go(j,,i-) if(gcd(a[i],a[j])>) dp[i]=max(dp[i],dp[j]+);
ans=max(ans,dp[i]);
}
printf("%d",ans);
}暴力DP Code
正解:
之前的n2转移是枚举判断两个数是否互质
如果两个数之间不互质其实就是有除了1以外的公因数
我们发现a[i]是小于等于105的
所以可以记录b[i]为以i为因数的好数结尾的好序列的最大长度
具体见代码 很好懂的啦
CODE:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define R register
#define go(i,a,b) for(R int i=a;i<=b;i++)
#define ll long long
#define M 100000+10
using namespace std;
int read()
{
int x=,y=;char c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,a[M],b[M],dp[M],ans;
int main()
{
n=read();
go(i,,n) a[i]=read(),dp[i]=;
sort(a+,a+n+);
go(i,,n)
{
int x=a[i],maxn=sqrt(a[i])+;
go(j,,maxn)
{
if(x%j==) dp[i]=max(dp[i],b[j]+);
while(x%j==) x/=j;
}
if(x>) dp[i]=max(dp[i],b[x]+);
x=a[i];
go(j,,maxn)
{
if(x%j==) b[j]=dp[i];
while(x%j==) x/=j;
}
if(x>) b[x]=dp[i];
ans=max(ans,dp[i]);
}
printf("%d",ans);
}
CF264B Good Sequences的更多相关文章
- 【题解】CF264B Good Sequences
[题解]CF264B Good Sequences 具有很明显的无后效性. 考虑\(dp\). 考虑初始条件,显然是\(dp(0)=0\) 考虑转移,显然是\(dp(t)=max(dp[k])+1\) ...
- 洛谷CF264B Good Sequences dp
解题报告:dp+数论 解题报告: 传送门! 开始看这题的时候想挂了,,,想了个显然是错解的想法,,,就是,我也不知道我怎么想的,鬼迷心窍地就想开个数组存每个质因数的倍数的出现次数,然后排下序的max就 ...
- [LeetCode] Repeated DNA Sequences 求重复的DNA序列
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
- [Leetcode] Repeated DNA Sequences
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
- 论文阅读(Weilin Huang——【AAAI2016】Reading Scene Text in Deep Convolutional Sequences)
Weilin Huang--[AAAI2016]Reading Scene Text in Deep Convolutional Sequences 目录 作者和相关链接 方法概括 创新点和贡献 方法 ...
- leetcode 187. Repeated DNA Sequences 求重复的DNA串 ---------- java
All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: "ACG ...
- [UCSD白板题] Longest Common Subsequence of Three Sequences
Problem Introduction In this problem, your goal is to compute the length of a longest common subsequ ...
- Python数据类型之“序列概述与基本序列类型(Basic Sequences)”
序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list. ...
- Extract Fasta Sequences Sub Sets by position
cut -d " " -f 1 sequences.fa | tr -s "\n" "\t"| sed -s 's/>/\n/g' & ...
随机推荐
- 【Web Shell】- 技术剖析中国菜刀 - Part II
在第一部分,简单描述了中国菜刀的基本功能.本文我将剖析中国菜刀的平台多功能性.传输机制.交互模式和检测.我希望通过我的讲解,您能够根据您的环境检测出并清除它. 平台 那么中国菜刀可以在哪些平台上运行? ...
- 【Linux笔记】CentOS 7 systemctl、firewalld
一.CentOS7 systemctl 在CentOS7中,进行chkconfig命令操作时会发现有类似“systemctl.....”的提示,systemctl可以简单实现service和chkco ...
- Spring(2):Spring Ioc
1.下载spring-framework-3.2.0 完整包下载路径: https://repo.spring.io/webapp/#/artifacts/browse/tree/Properties ...
- BZOJ3158 千钧一发(最小割)
可以看做一些物品中某些互相排斥求最大价值.如果这是个二分图的话,就很容易用最小割了. 观察其给出的条件间是否有什么联系.如果两个数都是偶数,显然满足条件二:而若都是奇数,则满足条件一,因为式子列出来发 ...
- STL Set和multiset 容器
STL Set和multiset 容器 set/multiset的简介 set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列. 元素插入过程是按排序规则插入,所以不能指定插入位 ...
- 【刷题】BZOJ 3514 Codechef MARCH14 GERALD07加强版
Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...
- [AT2384] [agc015_f] Kenus the Ancient Greek
题目链接 AtCoder:https://agc015.contest.atcoder.jp/tasks/agc015_f 洛谷:https://www.luogu.org/problemnew/sh ...
- UVA.12169 Disgruntled Judge ( 拓展欧几里得 )
UVA.12169 Disgruntled Judge ( 拓展欧几里得 ) 题意分析 给出T个数字,x1,x3--x2T-1.并且我们知道这x1,x2,x3,x4--x2T之间满足xi = (a * ...
- Docker 及 nvidia-docker 使用
Docker 基本用法 1. 安装社区版docker-ce 及 nvidia-docker2 插件 通过官网介绍的软件源的方式安装. 如果要安装nvidia-docker,由于其需要与docker-c ...
- SQL复杂语句查询练习
--复杂查询练习 -- 1 .列出所有员工的年工资,按年薪从低到高排序. SELECT (SAL+NVL(COMM,0))*12 INCOME FROM EMP ORDER BY INCOME; -- ...