蒟蒻の链表疑问

P3613 【深基15.例2】寄包柜

imfkwk @ 2021-01-24 14:59:58

这题,大概可以用链表写。刚刚用vector和map过了两次,觉得vector的形式和链表非常相像。于是在题解里一个链表都没有的情况下,画蛇添足地写了链表,贡献了几次提交次数和几个红色的20分。

我的链表究竟哪里有问题啊!

#include <bits/stdc++.h>
using namespace std;
int num;

int head[100001];
int from[10000001];
int item[10000001];
int no[10000001];

int n, q;

int main(void) {
    scanf("%d%d", &n, &q);

    while (q--) {
        int k, x, y, z;
        scanf("%d", &k);

        if (k == 1) {
            scanf("%d%d%d", &x, &y, &z);
            bool f = 1;
            int p = head[x];

            while (p) {
                if (no[p] == y) {
                    f = 0;
                    item[p] == z;
                    break;
                }
                p = from[p];
            }

            if (f) {
                ++ num;
                from[num] = head[x];
                item[num] = z;
                no[num] = y;
                head[x] = num;
            }

        } else if (k == 2) {
            scanf("%d%d", &x, &y);
            int p = head[x];

            while (p) {
                if (no[p] == y) {
                    printf("%d\n", item[p]);
                    break;
                }
                p = from[p];
            }
        }
    }

    return 0;
}

思路和vector是一样的。先搜索这个柜子里存没存东西,存了就替换,没存就加一个。(看了题解发现这种行为多此一举,因为可以从后往前搜索,这样搜索到的就是最终状态)

救命。


by liuzimingc @ 2021-01-24 15:06:50

@I_love_your_mother

你有没有MLE啊……


by imfkwk @ 2021-01-24 15:10:00

@liuzimingc 没有啊


by imfkwk @ 2021-01-24 15:11:05

@liuzimingc 跟vector差不多是一个数量级的


by liuzimingc @ 2021-01-24 15:13:31

@I_love_your_mother

好吧你CE了……(好像还有WA)

还是 llss 用 vector 吧……

@liuzimingc


by liuzimingc @ 2021-01-24 15:15:01

@I_love_your_mother

天呐是爆切紫题的大佬!

这题放在深基里面就是用来说vector的,so……


by imfkwk @ 2021-01-24 15:22:16

@liuzimingc 为什么会有CE啊()提交记录


by 123456zmy @ 2021-01-24 15:23:07

难道这样写不会 TLE 吗还是数据太水了


by liuzimingc @ 2021-01-24 15:23:38

@I_love_your_mother

是PE(

\kk


by imfkwk @ 2021-01-24 15:26:58

@123456zmy 所以最快的是map吗()


by 123456zmy @ 2021-01-24 15:32:05

map是 O(q\log) 的,vector 可以通过某些操作做到 \sum a_i,而链表或者和链表等价的 vector 写法可以被卡到 n^2


| 下一页