bzoj1978
朴素的算法是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的更多相关文章
- [bzoj1978][BeiJing2010]取数游戏 game_动态规划_质因数分解
取数游戏 game bzoj-1978 BeiJing-2010 题目大意:给定一个$n$个数的$a$序列,要求取出$k$个数.假设目前取出的数是$a_j$,那么下次取出的$a_k$必须保证:$j&l ...
- BZOJ1978: [BeiJing2010]取数游戏 game
1978: [BeiJing2010]取数游戏 game Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 650 Solved: 400[Submit] ...
- P4411&&BZOJ1978 [BJWC2010]取数游戏(动态规划dp)
P4411 一道dp f[i]表示一定选第i个数的条件下前i个数所能得到的最优值 last[i]表示质因数i在数列a中最后出现时的下标 状态转移方程为\(f[i]=max\{f[last[j]\:|\ ...
- [转载]hzwer的bzoj题单
counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...
- BZOJ刷题列表【转载于hzwer】
沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...
随机推荐
- TCP/IP协议原理与应用笔记02:断点续传
1.断点续传简介: FTP(文件传输协议的简称)(File Transfer Protocol. FTP)客户端软件断点续传指的是在下载或上传时,将下载或上传任务(一个文件或一个压缩包)人 ...
- ssh连接超时问题解决方案
方法一: 1.设置服务器向SSH客户端连接会话发送频率和时间 #vi /etc/ssh/sshd_config,添加如下两行ClientAliveInterval 60ClientAliveCount ...
- U3D 通过预置对象实现手动创建精灵
一: 这种可以在游戏的一开始,不显示某些物体,而且通过某种时机,来显示所需要显示的物体 这里就用到了实例化预置对象. 实例化更多通常用于实例投射物(如子弹.榴弹.破片.飞行的铁球等),AI敌人,粒子爆 ...
- PetaPoco 存储过程
1 执行不带参数的存储过程 public List<dynamic> ceshiProc() { string sql = @"EXEC [dbo].[p_ceshi1]&quo ...
- JS打开窗口问题
语法 window.open(URL,name,features,replace) URL:一个可选的字符串,声明了要在新窗口中显示的文档的 URL.如果省略了这个参数,或者它的值是空字符串,那么新窗 ...
- Android图表引擎AChartEngine之折线图使用
最近在帮老师做一个课题,其中app端需要显示折线图以便直观地看数据波动,上网查了些资料后发现了这款图标引擎,另外感谢李坤老师的博客,帮助很大. 废话不多说,下面写代码. 一.AChartEngine是 ...
- java 生成pdf报表
public void saveMapAddressInfo(String orderCode){ try{ List<Leads> leadses = leadsService.find ...
- CentOS 6.5 64位,调整分区大小
调整硬盘分区大小 想增加root空间,减少home空间. 1.查看硬盘使用情况. [root@npm ~]# df -h Filesystem Size Used Avail Use% Mounted ...
- ios里面如何压缩图片
在iOS里面,压缩图片跟在其他环境里面差不多,都和累死, 就是对当前图片从新画图,制定一个尺寸的问题 UIImage* image = [UIImage imageNamed:@"cat.j ...
- Long型整数,缄默溢出
/** 长整数问题 @author husky */ public class LongDemo { public static void main(String[] args) { /** * 问题 ...