提交记录 10765
| 提交时间 |
评测时间 |
| 2019-09-29 23:55:48 |
2020-08-01 02:28:32 |
#include "router.h"
#include <algorithm>
int nn;
RoutingTableEntry *b;
bool cmp(const RoutingTableEntry &x,const RoutingTableEntry &y){
return x.addr<y.addr || x.addr==y.addr && x.len<y.len;
}
void init(int n, int q, const RoutingTableEntry *a) {
b=(RoutingTableEntry *)a;nn=n;
for (int i=0;i<nn;i++){
unsigned t;
if (b[i].len>0){
t=b[i].addr>>(32-b[i].len)<<(32-b[i].len);
}else{
t=0;
}
if (b[i].addr!=t){
b[i].addr=t;
}
}
std::sort(b,b+nn,cmp);
}
unsigned query(unsigned addr) {
for (int k=32;k>=0;k--){
int lo=nn-1,hi=-1;
while (lo-hi>1){
int mid=(lo+hi)/2;
if (b[mid].addr>=addr) lo=mid;
else hi=mid;
}
for (int i=lo;i<nn;i++){
if (b[i].addr==addr){
if (b[i].len==k) return b[i].nexthop;
}else{
break;
}
}
if (k<=1){
addr=0;
}else{
addr>>=(33-k);
addr<<=(33-k);
}
}
return 0;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 11.69 us | 24 KB | Accepted | Score: 25 | 显示更多 |
| Testcase #2 | 78.659 ms | 9 MB + 500 KB | Accepted | Score: 25 | 显示更多 |
| Testcase #3 | 13.981 s | 9 MB + 500 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #4 | 27.843 s | 9 MB + 500 KB | Wrong Answer | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-29 00:19:21 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠