【题解】CF264B Good Sequences

具有很明显的无后效性。

考虑\(dp\)。

考虑初始条件,显然是\(dp(0)=0\)

考虑转移,显然是\(dp(t)=max(dp[k])+1\)其中\(gcd(data[t],data[k])>1\)

这样的转移是\(O(n^2)\)的!显然超时。

发现值域\(\le 100000\)那么我们将数拆成它的质因数。

线性筛素数预处理\([1,100000]\)的质数\(O(n)\)的代价。存下来。

然后转移的时候,先直接\(O(\sqrt{n})\)枚举质因数,直接从\(vector\)表里查询能够从谁那里转移。

根据\(dp\)的最优性质,可以知道只需要从\(vector\)的最后一个 \(dp\)值转移过来就好了,一定是最大的。

这样复杂度就是\(O(n\sqrt{n})\)了

#include<bits/stdc++.h>

#define RP(t,a,b) for(register int (t)=(a),edd_=(b);t<=edd_;++t)
#define DRP(t,a,b) for(register int (t)=(a),edd_=(b);t>=edd_;--t)
#define ERP(t,a) for(int t=head[a];t;t=e[t].nx)
#define Min(a,b) ((a)<(b)?(a):(b))
#define pushup(x) seg[(x)]=seg[(x)<<1]+seg[(x)<<1|1]
#define midd register int mid=(l+r)>>1
#define chek if(R<l||r<L)return
#define TMP template<class ccf>
#define rgt L,R,mid,r,pos<<1|1
#define lef L,R,l,mid,pos<<1
#define all 1,n,1 using namespace std;typedef long long ll;
TMP inline ccf qr(ccf k){
char c=getchar();
ccf x=0;
int q=1;
while(c<48||c>57)q=c==45?-1:q,c=getchar();
while(c>=48&&c<=57)x=x*10+c-48,c=getchar();
return q==-1?-x:x;
}
const int maxn=100005;
const int maxl=maxn-5;
bool usd[maxn];
int data[maxn];
#define isp(x) (!usd[x])
vector < int > pr;
#define pb push_back
vector < int > p[100001];
int n;
int ans;
int dp[maxn]; inline void gen_pr(){
usd[1]=1;
usd[0]=1;
RP(t,2,maxl){
if(!usd[t])
pr.pb(t);
RP(i,0,pr.size()-1){
if(t*pr[i]>maxn)
break;
usd[t*pr[i]]=1;
if(!(t%pr[i]))
break;
}
}
} inline int Max(int x,int y){
if(x>y)
return x;
return y;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("good.in","r",stdin);
freopen("good.out","w",stdout);
#endif
gen_pr();
n=qr(1);
RP(t,1,n)
data[t]=qr(1);
int siz=pr.size()-1; RP(t,1,n){register int sav=data[t];
RP(i,0,siz){
register int now=pr[i];
register int nowcnt=p[now].size();
if(!(sav%now)){
while(!(sav%now))
sav/=now;
if(nowcnt)
dp[t]=Max(dp[t],dp[p[now][nowcnt-1]]+1);
else
dp[t]=Max(dp[t],1);
p[now].pb(t);
}
if(sav<now)
break;
}
} ans=1;
RP(t,1,n)
ans=Max(ans,dp[t]);
cout<<ans<<endl;
return 0;
}

【题解】CF264B Good Sequences的更多相关文章

  1. 洛谷CF264B Good Sequences dp

    解题报告:dp+数论 解题报告: 传送门! 开始看这题的时候想挂了,,,想了个显然是错解的想法,,,就是,我也不知道我怎么想的,鬼迷心窍地就想开个数组存每个质因数的倍数的出现次数,然后排下序的max就 ...

  2. 题解 CF1428F Fruit Sequences

    \(\texttt{Bullshit}\) 蒟蒻 \(\texttt{7 min}\) 切 \(\texttt{F}\), 挽回了本一定掉分的局面/cy 分竟然还没有别人 5 题高 (本题解为目前 c ...

  3. CF264B Good Sequences

    传送门 Description: 松鼠丽丝特别喜欢n个她称之为“好整数”的整数:a1,a2,……,an.(会输入) 现在,她对“好序列”很感兴趣.如果一个序列x1,x2,...,xk能够满足一下三个条 ...

  4. Leetcode:Repeated DNA Sequences详细题解

    题目 All DNA is composed of a series of nucleotides abbreviated as A, C, G, and T, for example: " ...

  5. CodeForces 450B Jzzhu and Sequences(矩阵快速幂)题解

    思路: 之前那篇完全没想清楚,给删了,下午一上班突然想明白了. 讲一下这道题的大概思路,应该就明白矩阵快速幂是怎么回事了. 我们首先可以推导出 学过矩阵的都应该看得懂,我们把它简写成T*A(n-1)= ...

  6. 题解 UVA1608 【不无聊的序列 Non-boring sequences】

    思路: 算法很显然: 一.在区间\([l,r]\)找到一个只出现一次的元素P(如果不存在,那么序列\(boring\)) 二.递归处理区间\([l,p-1]\)和区间\([p+1,r]\). 其关键在 ...

  7. Codeforces Round #631 (Div. 1) B. Dreamoon Likes Sequences 题解(思维+求贡献)

    题目链接 题目大意 让你构造一个严格单调上升的数组a满足\(1<=a_1<a_2<....a_n<=d\) 而且要使得这个数组的异或前缀和也满足严格单调上升,求有多少个满足条件 ...

  8. Codeforces Round #670 (Div. 2) D. Three Sequences 题解(差分+思维+构造)

    题目链接 题目大意 给你一个长为n的数组a,要你构造一个非严格单调上升的数组b和一个非严格单调下降的数组c,使得\(b_i+c_i=a_i\) 要你使这两个数组b,c中最大的元素最小,还有q次修改(q ...

  9. CF450B Jzzhu and Sequences 题解

    Content 有一个长度为 \(n\) 的数列 \(\{a_1,a_2,\dots,a_n\}\),满足如下的递推公式: \(i=1\) 时,\(a_1=x\). \(i=2\) 时,\(a_2=y ...

随机推荐

  1. 笔记-迎难而上之Java基础进阶8

    函数式接口 函数式接口:有且只有一个抽象方法的接口,(可以包含其他默认,静态,私有方法) //函数式接口的使用,创建一个函数式接口 public interface FunctionalInterfa ...

  2. LAN、WAN、WLAN的区别

    听语音 浏览:22034 | 更新:2015-06-22 20:10 | 标签:网线 1 2 3 4 5 6 7 分步阅读 好多朋友在群内问我路由器如何配置,本来还耐心解答,但是他竟然连LAN.WAN ...

  3. Dedecms 数据库结构分析

    本文主要是为了今后对Dedecms做二次开发所写.安装后dedecms的数据库结构,如(图1)所示, 安装后的dedecms一共有 86 张数据表. 主要数据结构表 dede_addonarticle ...

  4. 聚合数据 iOS 项目开发实战:条码查询器

    记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.c ...

  5. Reverse Linked List II -- 翻转部分链表

    Reverse a linked list from position m to n. Do it in-place and in one-pass. For example:Given1->2 ...

  6. jquery 判断元素显示或隐藏

    $().is(":hidden"); $().is(":visible");

  7. asp.net模拟请求

    在asp.net模拟请求,微软在控件状态有安全性控制. __VIEWSTATE.__EVENTVALIDATION要与服务端页面(.aspx)中元素信息保存一致.

  8. Node.js学习笔记(2)——关于异步编程风格

    Node.js的异步编程风格是它的一大特点,在代码中就是体现在回调中. 首先是代码的顺序执行: function heavyCompute(n, callback) { var count = 0, ...

  9. 我如何添加一个空目录到Git仓库?

    新建了一个仓库,只是创建一些目录结构,还不里面放什么,要放的内容还没有,还不存在,应该怎么办呢? Git 是不跟踪空目录的,所以需要跟踪那么就需要添加文件! 也就是说 Git 中不存在真正意义上的空目 ...

  10. 导出数据生成Excel(MVC)

    /// <summary> /// 生成Excel /// </summary> /// <returns></returns> public File ...