朴素的算法是O(n2logn)
观察这个算法,似乎很难在进行优化
我们就要换一种思路
考虑到一个数的约数总不是很多,穷举约数也是可以在O(sqrt(x))的时间内完成的
并且注意到,能否继续往下选数,只在于最后一个被选中的数
设f[x]当前最后一个选中的数和上一个可以被选中的数的gcd为x时最多选的数的个数
顺着扫描可得到f[x]=max(f[y])+1 (if y|ai且ai/y>=L,x>=L x|ai )
对于这个方程的转移,我们可以先用k记录max(f[y]) (if y|ai且ai/y>=L)
然后转移f[x]=k+1 (x>=L x|ai )
然后就可以解决了

 var f,a:array[..] of longint;
i,j,k,ans,n,m,l:longint; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; begin
readln(n,l);
for i:= to n do
begin
read(a[i]);
if a[i]>m then m:=a[i];
end;
for i:= to n do
begin
k:=;
for j:= to trunc(sqrt(a[i])) do
if a[i] mod j= then
begin
k:=max(k,f[j]);
k:=max(k,f[a[i] div j]);
end;
inc(k);
for j:= to trunc(sqrt(a[i])) do
if a[i] mod j= then
begin
if j>=l then f[j]:=k;
if a[i] div j>=l then f[a[i] div j]:=k;
end;
end;
ans:=;
for i:=l to m do
ans:=max(ans,f[i]);
writeln(ans);
end.

bzoj1978的更多相关文章

  1. [bzoj1978][BeiJing2010]取数游戏 game_动态规划_质因数分解

    取数游戏 game bzoj-1978 BeiJing-2010 题目大意:给定一个$n$个数的$a$序列,要求取出$k$个数.假设目前取出的数是$a_j$,那么下次取出的$a_k$必须保证:$j&l ...

  2. BZOJ1978: [BeiJing2010]取数游戏 game

    1978: [BeiJing2010]取数游戏 game Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 650  Solved: 400[Submit] ...

  3. P4411&&BZOJ1978 [BJWC2010]取数游戏(动态规划dp)

    P4411 一道dp f[i]表示一定选第i个数的条件下前i个数所能得到的最优值 last[i]表示质因数i在数列a中最后出现时的下标 状态转移方程为\(f[i]=max\{f[last[j]\:|\ ...

  4. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  5. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. TCP/IP协议原理与应用笔记02:断点续传

    1.断点续传简介:       FTP(文件传输协议的简称)(File Transfer Protocol. FTP)客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人 ...

  2. ssh连接超时问题解决方案

    方法一: 1.设置服务器向SSH客户端连接会话发送频率和时间 #vi /etc/ssh/sshd_config,添加如下两行ClientAliveInterval 60ClientAliveCount ...

  3. U3D 通过预置对象实现手动创建精灵

    一: 这种可以在游戏的一开始,不显示某些物体,而且通过某种时机,来显示所需要显示的物体 这里就用到了实例化预置对象. 实例化更多通常用于实例投射物(如子弹.榴弹.破片.飞行的铁球等),AI敌人,粒子爆 ...

  4. PetaPoco 存储过程

    1 执行不带参数的存储过程 public List<dynamic> ceshiProc() { string sql = @"EXEC [dbo].[p_ceshi1]&quo ...

  5. JS打开窗口问题

    语法 window.open(URL,name,features,replace) URL:一个可选的字符串,声明了要在新窗口中显示的文档的 URL.如果省略了这个参数,或者它的值是空字符串,那么新窗 ...

  6. Android图表引擎AChartEngine之折线图使用

    最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...

  7. java 生成pdf报表

    public void saveMapAddressInfo(String orderCode){ try{ List<Leads> leadses = leadsService.find ...

  8. CentOS 6.5 64位,调整分区大小

    调整硬盘分区大小 想增加root空间,减少home空间. 1.查看硬盘使用情况. [root@npm ~]# df -h Filesystem Size Used Avail Use% Mounted ...

  9. ios里面如何压缩图片

    在iOS里面,压缩图片跟在其他环境里面差不多,都和累死, 就是对当前图片从新画图,制定一个尺寸的问题 UIImage* image = [UIImage imageNamed:@"cat.j ...

  10. Long型整数,缄默溢出

    /** 长整数问题 @author husky */ public class LongDemo { public static void main(String[] args) { /** * 问题 ...