提交记录 14463


用户 题目 状态 得分 用时 内存 语言 代码长度
gaoyichuan router32. 测测你的路由器 Wrong Answer 25 191.297 ms 44848 KB C++ 1.07 KB
提交时间 评测时间
2020-09-29 15:57:57 2020-09-29 15:58:03
#include "router.h"
#include <cstdint>

#define NCHILD 2

#define BIT_BE32(x, b) ((__builtin_bswap32(x) & (1 << (32 - (b)))) ? 1 : 0)

class TrieNode {
  public:
    TrieNode *child[NCHILD] = {nullptr};

    bool end;
    unsigned nexthop;

    TrieNode() {
        this->end = false;
    }
};

TrieNode root;

void insert(RoutingTableEntry entry) {
    TrieNode *p = &root;

    for(int i = 0; i < entry.len; i++) {
        int v = BIT_BE32(entry.addr, i);
        if(p->child[v] == nullptr) {
            p->child[v] = new TrieNode();
        }

        p = p->child[v];
    }

    p->end = true;
    p->nexthop = entry.nexthop;
}

void init(int n, int q, const RoutingTableEntry *a) {
    root.end = false;
    for(int i = 0; i < n; i++) {
        insert(a[i]);
    }
}

unsigned query(unsigned addr) {
    TrieNode *p = &root;

    for(int i = 0; i < 32; i++) {
        int v = BIT_BE32(addr, i);
        if(p->child[v] != nullptr) {
            p = p->child[v];
        } else if(p->end) {
            return p->nexthop;
        } else {
            return 0;
        }
    }

    return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #112.77 us24 KBAcceptedScore: 25

Testcase #242.753 ms43 MB + 816 KBWrong AnswerScore: 0

Testcase #3117.68 ms43 MB + 816 KBWrong AnswerScore: 0

Testcase #4191.297 ms43 MB + 816 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-22 11:41:05 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠