88pts:
TLE
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
using namespace std;
#define int long long
int t, n, a[200010], cnt[200010];
bool f[200010];//防止毒瘤数组卡100+只跳远长度一样的青蛙,记录跳远长度为i是否被记录过
int num[200010];//记录跳远长度为i的青蛙有多少只
signed main() {
cin >> t;
while(t--) {
cin >> n;
for(int i = 1;i <= n;i++) {
cin >> a[i];
num[a[i]]++;
}
for(int i = 1;i <= n;i++) {
if(f[a[i]] == false) {
f[a[i]] = true;
for(int j = a[i];j <= n;j += a[i]) {
cnt[j] += num[a[i]];//有num[a[i]]只青蛙要捆绑一起跳
}
}
}
int mx = 0;
for(int i = 2;i <= n;i++) {
mx = max(mx, cnt[i]);
}
cout << mx << "\n";
memset(cnt, 0, sizeof(cnt));
memset(f, 0, sizeof(f));
memset(num, 0, sizeof(f));
}
return 0;
}
明知num、f开的不够大,却不知怎改