提交记录 14327


用户 题目 状态 得分 用时 内存 语言 代码长度
zhangzj router32. 测测你的路由器 Time Limit Exceeded 50 30 s 22644 KB C++ 1.29 KB
提交时间 评测时间
2020-09-23 11:58:58 2020-09-23 11:59:35
#include "router.h"
#include <arpa/inet.h>

class RoutingTableEntry_z
{
public:
    unsigned addr;
    unsigned char len;
    unsigned nexthop;
    unsigned mask;
    void set(RoutingTableEntry fr)
    {
        len = fr.len;
        mask = 0xffffffffull << (32 - len);
        nexthop = fr.nexthop;
        addr = ntohl(fr.addr);
    }
    bool check(unsigned checkaddr)
    {
        if ((addr & mask) == (checkaddr & mask))
            return true;
        return false;
    }
}table[830000];

int N;

void init(int n, int q, const RoutingTableEntry *a) {
    N = n;
    for (int i = 0; i < n; i++)
        table[i].set(a[i]);
}

unsigned query(unsigned addr) {
    addr = ntohl(addr);
    int len = -1;
    unsigned nexthop = 0;
    for (int i = 0; i < N; i++)
    {
        if (table[i].check(addr) && table[i].len > len)
        {
            len = table[i].len;
            nexthop = table[i].nexthop;
        }
    }
    // int ret = -1;
    // for (int l = 0, r = N - 1; l <= r;)
    // {
    //     int mid = (l + r) >> 1;
    //     if (table[mid].check(addr))
    //     {
    //         ret = mid;
    //         l = mid + 1;
    //     }
    //     else if (table[mid].addr < addr) l = mid + 1;
    //     else r = mid - 1;
    // }
    // return ret == -1 ? 0 : table[ret].nexthop;
    return nexthop;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #112.01 us28 KBAcceptedScore: 25

Testcase #25.047 ms22 MB + 116 KBAcceptedScore: 25

Testcase #330 s22 MB + 112 KBTime Limit ExceededScore: 0

Testcase #430 s22 MB + 112 KBTime Limit ExceededScore: 0


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