请问哪里可以下载测试数据吗?
查看原帖
请问哪里可以下载测试数据吗?
1077851
rmxsxhl楼主2024/1/2 10:23

看了题解,发现思路是差不多的,造了一些假数据,答案跟ac的代码输出也是一样的,除了一个TLE,别的也是过不了。

#include <iostream>
#include <algorithm>
#include <queue>
#include <cstdlib>
#include <cstring>
#include <unordered_map>

using namespace std;

enum
{
    kSiz = 1000008,
};

int arr[4][kSiz];

unordered_map<int, int> now, nex;
int n, m;

int getMin(unordered_map<int, int> &m)
{
    if (m.empty())
    {
        return 0;
    }
    int i = 0;
    for (i = 0; m.find(i) != m.end(); ++i)
    {
    }
    return i;
}

// from a to b; c is old
bool trans(int *a, int *b, int *c, unordered_map<int, int> *now, int t, unordered_map<int, int> *nex)
{
    (*nex).clear();
    int same = 0;
    for (int i = 0; i < n; ++i)
    {
        if (t < a[i])
        {
            b[i] = t;
        }
        else
        {
            auto it = (*now).find(a[i]);
            if (it->second == 1)
            {
                b[i] = a[i];
            }
            else
            {
                b[i] = t;
            }
        }
        (*nex)[b[i]]++;

        if (b[i] == c[i])
        {
            ++same;
        }
    }
    return same == n;
}

void func()
{
    scanf("%d%d", &n, &m);
    now.clear();
    nex.clear();
    for (int i = 0; i < n; ++i)
    {
        scanf("%d", &arr[0][i]);
        now[arr[0][i]]++;
    }

    unordered_map<int, int> *prev = &now;
    unordered_map<int, int> *next = &nex;
    int *a = arr[0];
    int *b = arr[1];
    int *c = arr[2];
    c[1] = -1;
    while (m--)
    {
        int t = getMin(*prev);
        bool flag = trans(a, b, c, prev, t, next);

        unordered_map<int, int> *tmp = prev;
        prev = next;
        next = tmp;

        int *p = a;
        a = b;
        b = c;
        c = p;

        if (flag)
        {
            break;
        }
    }

    if (m > 0 && m % 2 == 1)
    {
        a = c;
    }

    for (int i = 0; i < n; ++i)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int main()
{
    int k;
    scanf("%d", &k);
    while (k--)
    {
        func();
    }

    return 0;
}

2024/1/2 10:23
加载中...