知道错误不会改
查看原帖
知道错误不会改
676590
HenryQ2022楼主2023/12/17 11:39

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开的不够大,却不知怎改

2023/12/17 11:39
加载中...