提交记录 14463
| 提交时间 |
评测时间 |
| 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;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 12.77 us | 24 KB | Accepted | Score: 25 | 显示更多 |
| Testcase #2 | 42.753 ms | 43 MB + 816 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #3 | 117.68 ms | 43 MB + 816 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #4 | 191.297 ms | 43 MB + 816 KB | Wrong Answer | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-22 11:41:05 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠