- BlackPanda 的博客
-
感性理解 BPJudge 评测机速度(2025.08.29)
- 2025-8-29 18:57:30 @
本文测试内容参考:感性理解 LibreOJ 测评机速度(2020 年 7 月 2 日之后)
测试时间:2025-08-29
BPJudge 评测机信息:Intel(R) Xeon(R) Granite Rapids CPU (Intel(R) Xeon(R) 6982P-C) @ 3.20GHz(全核睿频 3.60GHz)
评测机速度(时间以毫秒为单位):
# | Language | T1 New | T2 | T3 | T4 | T5 | T6-1 |
---|---|---|---|---|---|---|---|
Codeforces | C++20 GCC13 (-O2) | 312 | 468 | 952 | 921 | 1249 | 499 |
UOJ | C++20 GCC10.3.0 (-O2) | 315 | 378 | 1263 | 631 | 515 | 552 |
洛谷 | C++20 GCC13.2 (-O2) | 37 | 395 | 1070 | 817 | - | 535 |
AtCoder | C++20 GCC12.2 (-O2) | 309 | 345 | 766 | 692 | 628 | 366 |
LOJ | C++20 GCC12 (-O2) | 273 | 304 | 505 | 541 | 457 | 353 |
BPJudge | C++20 GCC14.3 (-O2) | 277 | 235 | 788 | 563 | 735 | 242 |
# | Language | T6-2 | T6-3 | T7-1 | T7-2 | T8 | T9-1 | T9-2 |
---|---|---|---|---|---|---|---|---|
Codeforces | C++20 GCC13 (-O2) | 593 | 108 | 389 | 1030 | 828 | 733 | 718 |
UOJ | C++20 GCC10.3.0 (-O2) | 547 | 59 | 378 | 1135 | 868 | 691 | 472 |
洛谷 | C++20 GCC13.2 (-O2) | 521 | 73 | 322 | 959 | 739 | 180 | 178 |
AtCoder | C++20 GCC12.2 (-O2) | 460 | 65 | 359 | 603 | 681 | 141 | 147 |
LOJ | C++20 GCC12 (-O2) | 329 | 48 | 261 | 571 | 25 | 50 | 64 |
BPJudge | C++20 GCC14.3 (-O2) | 168 | 36 | 323 | 582 | 730 | 377 | 329 |
注:洛谷一栏中,标记为 -,意味着内存超限或者爆栈,无法进行测试。
测试内容
测试点 | 内容 |
---|---|
T1 | 循环 |
T2 | 欧拉筛 |
T3 | Floyd-Warshall 算法 |
T4 | std::set |
T5 | 内存申请(new ) |
T6 | 内存访问和缓存 |
T7 | 整数除法和取模 |
T8 | 浮点数运算 |
T9 | CPU 流水线和循环展开 |
//Test 1 New (2025.2.27)
#include<cstdio>
using namespace std;
int main(){
int a=1000000000,b=1;
while(a)b^=a,a--;
printf("%d\n",b);
return 0;
}
//Test 2
#include<cstdio>
using namespace std;
const int MX=50000000;
int p[MX],m[MX],pc;
int main(){
for(int i=2;i<MX;i++){
if(!m[i])p[++pc]=m[i]=i;
static int k;
for(int j=1;j<=pc&&p[j]<=m[i]&&(k=p[j]*i)<MX;j++)m[k]=p[j];
}
int ans=0;
for(int i=1;i<=pc;i++)ans^=p[i];
printf("%d\n",ans);
return 0;
}
//Test 3
#include<cstdio>
using namespace std;
const int MX=1000;
int G[MX][MX];
int sed=0;
inline int rand(){return sed=(sed*sed*73+sed*233+19260817)&0x0000ffff;}
int main(){
for(int i=0;i<MX;i++)
for(int j=0;j<MX;j++)
G[i][j]=rand();
for(int i=0;i<MX;i++)
for(int j=0;j<MX;j++)
for(int k=0;k<MX;k++)
if(G[j][k]>G[j][i]+G[i][k])G[j][k]=G[j][i]+G[i][k];
int ans=0;
for(int i=0;i<MX;i++)
for(int j=0;j<MX;j++)
ans^=G[i][j];
printf("%d\n",ans);
return 0;
}
//Test 4
#include<cstdio>
#include<algorithm>
#include<set>
using namespace std;
const int MX=1000000;
int sed=0;
inline int rand(){return sed=(sed*sed*73+sed*233+19260817);}
int main(){
set<int>S;
for(int i=0;i<MX;i++)S.insert(rand());
int ans=0;
for(set<int>::iterator it=S.begin();it!=S.end();it++)ans^=*it;
printf("%d\n",ans);
return 0;
}
//Test 5
#include<cstdio>
using namespace std;
const int MX=20000000;
int *it[MX];
int main(){
for(int i=0;i<MX;i++)it[i]=new int;
for(int i=0;i<MX;i++)*it[i]=i;
int ans=0;
for(int i=0;i<MX;i++)ans^=*it[i];
printf("%d\n",ans);
return 0;
}
//Test 6-1
#include<cstdio>
using namespace std;
const int MX=1<<25;
int a[MX];
inline unsigned int rand(){static unsigned int sed=0;return (sed=(sed*233+19260421))&(MX-1);}
int main(){
for(int i=0;i<MX;i++)a[rand()]=i;
return 0;
}
//Test 6-2
#include<cstdio>
using namespace std;
const int MX=1<<25;
int a[MX];
inline unsigned int rand(){static unsigned int sed=0;return (sed=(sed*(MX+1)+1025))&(MX-1);}
int main(){
for(int i=0;i<MX;i++)a[rand()]=i;
return 0;
}
//Test 6-3
#include<cstdio>
using namespace std;
const int MX=1<<25;
int a[MX];
inline unsigned int rand(){static unsigned int sed=0;return (sed=(sed*(MX+1)+1))&(MX-1);}
int main(){
for(int i=0;i<MX;i++)a[rand()]=i;
return 0;
}
//Test 7-1
#include<cstdio>
using namespace std;
typedef unsigned long long ull;
#define P 1000000007
const int MX=100000000;
int main(){
ull ans=1;
for(int i=1;i<MX;i++)ans=ans*i%P;
printf("%llu\n",ans);
return 0;
}
//Test 7-2
#include<cstdio>
using namespace std;
typedef unsigned long long ull;
int P=1000000007;
const int MX=100000000;
int main(){
ull ans=1;
for(int i=1;i<MX;i++)ans=ans*i%P;
printf("%llu\n",ans);
return 0;
}
//Test 8
#include<cstdio>
using namespace std;
const int MX=20000000;
int main(){
double ans=0.61234567898765,t=1,s=0;
for(int i=1;i<MX;i++)s+=(t*=ans);
printf("%f\n",s);
return 0;
}
//Test 9-1
#include<cstdio>
using namespace std;
typedef unsigned int uint;
const int MX=1<<10;
uint a[MX][MX],b[MX][MX];
inline uint rand(){static unsigned int sed=0;return (sed=(sed*233+19260421))&(MX-1);}
int main(){
register int i,j,k;
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
a[i][j]=rand();
#define A(t) (b[i][k+t]+=a[i][j]*a[j][k+t])
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
for(k=0;k<MX;k++)
A(0);
#undef A
uint s;
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
s+=a[i][j];
printf("%u\n",s);
return 0;
}
//Test 9-2
#include<cstdio>
using namespace std;
typedef unsigned int uint;
const int MX=1<<10;
uint a[MX][MX],b[MX][MX];
inline uint rand(){static unsigned int sed=0;return (sed=(sed*233+19260421))&(MX-1);}
int main(){
register int i,j,k;
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
a[i][j]=rand();
#define A(t) (b[i][k+t]+=a[i][j]*a[j][k+t])
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
for(k=0;k<MX;k+=8)
A(0),A(1),A(2),A(3),A(4),A(5),A(6),A(7);
#undef A
uint s;
for(i=0;i<MX;i++)
for(j=0;j<MX;j++)
s+=a[i][j];
printf("%u\n",s);
return 0;
}
0 条评论
目前还没有评论...