提交记录 15144


用户 题目 状态 得分 用时 内存 语言 代码长度
tangh18 router32. 测测你的路由器 Wrong Answer 25 2.767 s 43252 KB C++11 1018 B
提交时间 评测时间
2020-11-29 00:11:43 2020-11-29 00:11:49
#include "router.h"
#include <unordered_map>

uint32_t big2little32(uint32_t big){
  return (
    ((big & 0xff000000) >> 24) |
    ((big & 0x00ff0000) >> 8) |
    ((big & 0x0000ff00) << 8) |
    ((big & 0x000000ff) << 24) 
  );
}

uint32_t truncated(uint32_t u, int high, int low){
  uint32_t tmp = (uint32_t)0xffffffff;
  tmp = (tmp >> (32 - high + low));
  tmp = tmp << low;
  tmp = tmp & u;
  return tmp;
}

std::unordered_map<uint32_t, RoutingTableEntry> routeMap;

void init(int n, int q, const RoutingTableEntry *a) {
	for(int i = 0; i < n; i++){
        uint32_t addr = big2little32(a[i].addr);
        addr = addr >>(32 - unsigned(a[i].len));
        routeMap[addr] = a[i];
    }
  
}

unsigned query(unsigned addr) {
  int len = 32;
  addr = big2little32(addr);
  while(len){
    uint32_t cur_addr = truncated(addr, 32, 32 - len);
    cur_addr = cur_addr >> (32 - len);
    auto got = routeMap.find(cur_addr);
    if(got != routeMap.end()){
      return got->second.nexthop;
    }
    len--;
  }
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #114.42 us24 KBAcceptedScore: 25

Testcase #2133.26 ms42 MB + 244 KBWrong AnswerScore: 0

Testcase #31.453 s42 MB + 244 KBWrong AnswerScore: 0

Testcase #42.767 s42 MB + 244 KBWrong AnswerScore: 0


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