Codeforces #641div2 B
原题
思路:求最长上升子序列的改版
ACcodes:
#include <bits/stdc++.h>
using namespace std;
const int N = 2e5+10;
long long inf = 0x3f3f3f3f3f3f3f3f;
int test = 1;
int n,dp[N],a[N];
int main()
{
scanf("%d",&test);
while(test--)
{
cin >> n;
int ans = 0;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]),dp[i]=1;
for(int i=1;i<=n;i++)
{
for(int j=2*i;j<=n;j+=i)
if(a[j]>a[i])
dp[j] = max(dp[j],dp[i]+1);
ans = max(dp[i],ans);
}
cout << ans << endl;
}
return 0;
}```