LOADING

加载过慢请开启缓存,浏览器默认开启

daily 1

2023/5/22 daily

CF 264B

简单DP,先把所有的因子预处理出来,然后每次更新就好了

vector<int>fac[MAXN];
void init(){
    for(int i=2;i<MAXN;++i){
        for(int j=i;j<MAXN;j+=i){
            fac[j].push_back(i);
        }
    }
}
void solve(){
  int n;
  cin>>n;
  vector<int>a(n+1);
  map<int,int>dp;
  for(int i=1;i<=n;++i){
    cin>>a[i];
    for(int f:fac[a[i]]){
        dp[f]=0;
    }
  }
  for(int i=1;i<=n;++i){
    int cur_max=-1;
    for(int f:fac[a[i]]){
        dp[f]+=1;
        cur_max=max(cur_max,dp[f]);
    }
    for(int f:fac[a[i]]){
        dp[f]=max(dp[f],cur_max);
    }
  }
  int ans=1;
  for(auto&k:dp){
    ans=max(k.second,ans);
  }
  cout<<ans<<'\n';
  return;
}