题意:给出n 个数 的序列 问 从n个数删去任意个数  删去的数后的序列b1 b2 b3 ......bk  k|bk

思路: 这种题目都有一个特性 就是取到bk 的时候 需要前面有个bk-1的序列前置  这个时候暴力会多一个n 的复杂度

所以只要定义一个状态(j)表示选择了j个数 这个时候就可以转移到j+1 了

定义状态:dp[i][j] 前i个数 选择了j个

dp[i][j]=dp[i-1][j-1]+dp[i-1][j] ( j|a[i] ) 这个 选+不选

dp[i][j]=dp[i-1][j]    ( j|a[i]不成立 )

这里无法用n^2的复杂度过 而 我们知道 一个数的因子数可以用sqrt(j)的时间求出来 但是j 和a[i]/j 两个因子的大小不确定 所以就会影响dp进程 因为dp要从j到j+1从小到大转移(因为二维开不下 需要滚动 不然可以随便顺序)

( 数的因子是很稀疏的 所以不会超时  )

 #include<bits/stdc++.h>
#define FOR(i,f_start,f_end) for(int i=f_start;i<=f_end;i++)
#define MS(arr,arr_value) memset(arr,arr_value,sizeof(arr))
#define F first
#define S second
#define pii pair<int ,int >
#define mkp make_pair
#define pb push_back
#define arr(zzz) array<ll,zzz>
#define ll long long
using namespace std;
const int maxn=1e6+;
const int inf=0x3f3f3f3f;
const int mod=1e9+;
int a[maxn];
int dp[+];
int main(){
int n;
scanf("%d",&n);
for(int i=;i<n;i++)scanf("%d",&a[i]);
ll ans=;
int p=;
dp[]=;
for(int i=;i<n;i++){
vector<int>v(sqrt(a[i]));
for(int j=;j*j<=a[i];j++){
if(a[i]%j==){
v.pb(j);
if(a[i]/j!=j)v.pb(a[i]/j);
}
}
sort(v.begin(),v.end(),[](int a,int b){return a>b;});
for(auto p:v){
dp[p]=(1ll*dp[p-]+dp[p])%mod;
}
}
for(int i=;i<=;i++)ans+=dp[i],ans%=mod;
cout<<ans<<endl;
return ;
}

最新文章

  1. ASP.NET MVC 5 - 给数据模型添加校验器
  2. Android Broadcast 和 iOS Notification
  3. react native 网络get请求方式参数不可为undefined或null
  4. grunt学习
  5. Redis常用数据类型
  6. Win7-IIS7下运行PHP网站(以配置好的drupal网站为例)
  7. PHP合并两张图片(水印)
  8. Java基础--Java---IO流------GUI(布局)、Frame、事件监听机制、窗体事件、Action事件、鼠标事件、对话框Dialog、键盘事件、菜单
  9. Python基础(reduce,filter,map函数)
  10. 【Scala篇】--Scala中的函数
  11. 使用Elasticsearch-dump迁移ES数据
  12. Rabbit原理理解
  13. iOS开发GCD(3)-数据安全
  14. install svn server in Ubuntu
  15. javaMail实现收发邮件(一)
  16. ssh无法访问服务器报“ssh-dss”认证错误
  17. PHP面向对象构造和析构函数
  18. 我在eclipse输出的第一个hello world!
  19. 【欢迎来怼】 Beta发布事后诸葛亮会议
  20. 整理两个PetaPoco连接SQLite数据库的方法

热门文章

  1. ArcGIS 网络分析[3] 发布NAServer到ArcGIS for Server(以Server 10.4为例)
  2. C# ArcEngine二次开发之动态图层
  3. gitbook 入门教程之使用 gitbook.com 在线开发电子书
  4. ASP.NET Core 入门教程 8、ASP.NET Core + Entity Framework Core 数据访问入门
  5. mean项目的分模块开发
  6. c# winform多线程实时更新控件
  7. Oracle 12c RAC 安装文档
  8. drf 教程
  9. 目录命令(dir)
  10. C#基础知识之字符串比较方法:“==”操作符;RefernceEquals;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。