提交记录 10499
| 提交时间 |
评测时间 |
| 2019-09-18 19:23:59 |
2020-08-01 02:16:07 |
#pragma GCC optimize("Ofast,no-stack-protector")
#include "router.h"
#include <bits/stdc++.h>
#include <arpa/inet.h>
using namespace std;
unsigned table[1 << 23];
int top = 0;
unsigned shop[0x100000][512];
void ins(unsigned addr, int len, unsigned nexthop)
{
if(len <= 23)
{
addr >>= 9;
for(int T = 1 << (23 - len); T--; ++addr) table[addr] = nexthop;
}
else
{
unsigned &son = table[addr >> 9];
if(son<0xfff00000)
{
--top;
for(int i = 0; i < 512; i++) shop[top+0x100000][i] = son; son=top;
}
addr &= 511u;
for(int T = 1 << (32 - len); T--; ++addr) shop[son+0x100000][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)
{
addr = htonl(addr);
unsigned ent = table[addr >> 9];
if(ent>0xfff00000) return shop[ent+0x100000][addr & 511u];
else return ent;
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-29 11:25:38 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠