codeforces 264 B. Good Sequences(dp+数学的一点思想)
题目链接:http://codeforces.com/problemset/problem/264/B
题意:给出一个严格递增的一串数字,求最长的相邻两个数的gcd不为1的序列长度
其实这题可以考虑一下素因数,将每一个数都已是分解为几个不重复的素数,设dp[i]为含有因数i的最长序列有多长
然后遍历一下这串数字,每次更新dp[a[i]]=max(dp[j]+1,dp[a[i]]),j表示a[i]的素因数,再将每个素因数更新为
最大值。
for(int i = 1 ; i <= n ; i++) {
int gg = a[i] , flag = 0 , sum = 0;
MAX = 0;
for(int j = 0 ; j < cnt ; j++) {
flag = 0;
while(gg % num[j] == 0) {
flag = 1;
gg /= num[j];
}
if(flag == 1) {
b[sum++] = num[j];
}
if(gg == 1)//不加这句会超时,因为最后当gg为1的时候就没有1以外的因数了再找下去就是浪费时间
break;
}
for(int j = 0 ; j < sum ; j++) {
MAX = max(dp[b[j]] + 1 , MAX);
}
for(int j = 0 ; j < sum ; j++) {
dp[b[j]] = MAX;
}
}
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
using namespace std;
const int M = 1e5 + 10;
int a[M] , b[M] , dp[M] , prime[M] , num[M] , cnt = 0;
void IsPrime() {
prime[0] = prime[1] = 0 , prime[2] = 1;
for(int i = 3 ; i < M ; i++) {
prime[i] = i % 2 == 0 ? 0 : 1;
}
int t = (int)sqrt(M * 1.0);
for(int i = 3 ; i <= t ; i++) {
if(prime[i]) {
for(int j = i * i ; j < M ; j += 2 * i) {
prime[j] = 0;
}
}
}
for(int i = 2 ; i < M ; i++) {
if(prime[i]) {
num[cnt++] = i;
}
}
}
int main() {
int n;
IsPrime();
scanf("%d" , &n);
int count = 0 , MAX = 0;
for(int i = 1 ; i <= n ; i++) {
scanf("%d" , &a[i]);
}
memset(dp , 0 , sizeof(dp));
for(int i = 1 ; i <= n ; i++) {
int gg = a[i] , flag = 0 , sum = 0;
MAX = 0;
for(int j = 0 ; j < cnt ; j++) {
flag = 0;
while(gg % num[j] == 0) {
flag = 1;
gg /= num[j];
}
if(flag == 1) {
b[sum++] = num[j];
}
if(gg == 1)
break;
}
for(int j = 0 ; j < sum ; j++) {
MAX = max(dp[b[j]] + 1 , MAX);
}
for(int j = 0 ; j < sum ; j++) {
dp[b[j]] = MAX;
}
}
int MM = 1;
for(int i = 0 ; i < cnt ; i++) {
MM = max(dp[num[i]] , MM);
}
printf("%d\n" , MM);
return 0;
}
codeforces 264 B. Good Sequences(dp+数学的一点思想)的更多相关文章
- Codeforces 1144G Two Merged Sequences dp
Two Merged Sequences 感觉是个垃圾题啊, 为什么过的人这么少.. dp[ i ][ 0 ]表示处理完前 i 个, 第 i 个是递增序列序列里的元素,递减序列的最大值. dp[ i ...
- Codeforces 264 B. Good Sequences
B. Good Sequences time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- CodeForces - 441E:Valera and Number (DP&数学期望&二进制)
Valera is a coder. Recently he wrote a funny program. The pseudo code for this program is given belo ...
- CodeForces 447C DZY Loves Sequences DP
题目:click here 题意:求给定序列更改其中一个元素后的最长连续上升子序列的长度 分析:最长的连续子序列有2种,一种是严格上升(没有更改元素)的长度加1,一种是两段严格上升的加起来. #inc ...
- CodeForces 446A DZY Loves Sequences (DP+暴力)
题意:给定一个序列,让你找出一个最长的序列,使得最多改其中的一个数,使其变成严格上升序列. 析:f[i] 表示以 i 结尾的最长上升长度,g[i] 表示以 i 为开始的最长上升长度,这两个很容易就求得 ...
- CodeForces 450B Jzzhu and Sequences (矩阵优化)
CodeForces 450B Jzzhu and Sequences (矩阵优化) Description Jzzhu has invented a kind of sequences, they ...
- [BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆)
[BZOJ 3625] [Codeforces 438E] 小朋友的二叉树 (DP+生成函数+多项式开根+多项式求逆) 题面 一棵二叉树的所有点的点权都是给定的集合中的一个数. 让你求出1到m中所有权 ...
- # E. Mahmoud and Ehab and the xor-MST dp/数学+找规律+xor
E. Mahmoud and Ehab and the xor-MST dp/数学/找规律 题意 给出一个完全图的阶数n(1e18),点由0---n-1编号,边的权则为编号间的异或,问最小生成树是多少 ...
- 有关动态规划(主要是数位DP)的一点讨论
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法.20世纪50年代初美国数学家在研究多阶段决策过程的优化问题时, ...
随机推荐
- OI/ACM最全卡常大招
NO.10: 循环展开: 在缓存和寄存器允许的情况下一条语句内大量的展开运算会刺激 CPU 并发(蛤?这是个什么原理,算了,反正写了没坏处就这么写吧) NO.9: 特殊运算优化:(或许这真的没用) 取 ...
- win10应用商店卸载后重装教程
方法一 先进这个链接 http://go.microsoft.com/fwlink/?LinkId=619547 下载一个记事本文件,并且把它保存到你的“下载” 里面. 管理员身份打开Power ...
- vue前后分离项目部署(不同端口号,nginx反向代理解决跨域问题)
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #erro ...
- 算法与数据结构基础 - 哈希表(Hash Table)
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O( ...
- 使用 OpenSSL 为 Nginx 创建自签名证书 并开启客户端身份验证
本文章默认读者了解Openssl,CA,网站证书相关知识,直接实战!配置完成后,浏览器会显示"安全的HTTPS"连接.不会像其他文章那样,是红色警告的证书提示. 准备环境 笔者使用 ...
- 【转载】C# 中的委托和事件(详解)
<div class="postbody"> <div id="cnblogs_post_body" class="blogpost ...
- what is the CCA?
Clear Channel Assessment (CCA) is one of two carrier sense mechanisms in WLAN (or WiFi). It is defin ...
- JS中map()与forEach()的区别和用法
相同点: 1.都是循环遍历数组中的每一项 2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组) 3.匿名函数中的this都是指向window 4 ...
- jq css3实现跑马灯+大转盘
前端效果, <!DOCTYPE HTML><html><head> <meta http-equiv="Content-Type" con ...
- Flink 源码解析 —— 如何获取 ExecutionGraph ?
https://t.zsxq.com/UnA2jIi 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6. ...