提交记录 10476
| 提交时间 |
评测时间 |
| 2019-09-18 15:25:19 |
2020-08-01 02:15:59 |
#pragma GCC optimize("Ofast,no-stack-protector")
#include "router.h"
#include <bits/stdc++.h>
#include <arpa/inet.h>
using namespace std;
struct VEntry
{
unsigned son;
unsigned nexthop;
} table[1 << 24];
int top = 0;
unsigned shop[1 << 20][256];
unsigned inv24(unsigned x)
{
char a[4]; memcpy(a, &x, sizeof(a));
swap(a[0], a[2]); memcpy(&x, a, sizeof(a));
return x;
}
void ins(unsigned addr, int len, unsigned nexthop)
{
if(len <= 24)
{
addr >>= 8;
for(int T = 1 << (24 - len); T--; ++addr) table[inv24(addr)].nexthop = nexthop;
}
else
{
unsigned key = inv24(addr >> 8);
unsigned &son = table[key].son;
if(!son)
{
son = ++top;
for(int i = 0; i < 256; i++) shop[son][i] = table[key].nexthop;
}
addr &= 255u;
for(int T = 1 << (32 - len); T--; ++addr) shop[son][addr] = nexthop;
}
}
void init(int n, int q, const RoutingTableEntry *a)
{
for(int i = 0; i < n; i++) ins(htonl(a[i].addr), a[i].len, a[i].nexthop);
}
unsigned query(unsigned addr)
{
VEntry &ent = table[addr & 0xffffffu];
if(ent.son) return shop[ent.son][addr >> 24];
else return ent.nexthop;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 0 ns | 0 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |
| Testcase #2 | 0 ns | 0 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |
| Testcase #3 | 0 ns | 0 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |
| Testcase #4 | 0 ns | 0 KB | Memory Limit Exceeded | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-29 11:22:01 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠