社区讨论
造福后人
AT_joisc2017_e 壊れた機器 (Broken Device)参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @m5f98vch
- 此快照首次捕获于
- 2025/01/02 19:40 去年
- 此快照最后确认于
- 2025/11/04 12:03 4 个月前
在你的代码的前面加入如下代码可以实现自动测试:
CPP#ifdef ONLINE_JUDGE
#include "Broken_device_lib.h"
#else
#include <algorithm>
#include <iostream>
#include <random>
void Anna(int,long long,int,int []);
long long Bruno(int,int []);
namespace Judge{
int n,k,a[1000],p[1000],fl[1000],broken[1000];
long long x;
void output(int typ,long long num){
if(typ==1)
std::cout<<"Error:There is no position "<<num<<".\n";
if(typ==2)
std::cout<<"Error:Position "<<num<<" has been set more than once.\n";
if(typ==3)
std::cout<<"Error:Number "<<num<<" out of range.\n";
if(typ==4)
std::cout<<"Error:Position "<<num<<" has not been set.";
if(typ==5)
std::cout<<"Error:Expected "<<x<<",but found "<<num<<".\n";
std::cout<<"On this case:\n";
std::cout<<n<<' '<<x<<' '<<k<<'\n';
for(int i=0;i<k;i++) std::cout<<p[i]<<' ';
std::cout<<"\n";
exit(0);
}
}
void Set(int pos,int bit){
if(pos<0||pos>=Judge::n) Judge::output(1,pos);
if(Judge::fl[pos]==1) Judge::output(2,pos);
if(bit!=0&&bit!=1) Judge::output(3,bit);
Judge::fl[pos]=1;
if(Judge::broken[pos]&&bit){
std::cout<<"Warning:Position "<<pos<<" is broken,but your program sets it to 1.\n";
return;
}
Judge::a[pos]=bit;
}
int main(){
std::mt19937_64 random(time(0));
int T=1000;
while(T--){
Judge::n=150,Judge::k=40;
for(int i=0;i<Judge::n;i++) Judge::a[i]=Judge::fl[i]=Judge::broken[i]=0;
Judge::x=random()%1000000000000000001ll;
for(int i=0;i<Judge::k;i++){
Judge::p[i]=random()%Judge::n;
Judge::broken[Judge::p[i]]=1;
}
std::sort(Judge::p,Judge::p+Judge::k);
Judge::k=std::unique(Judge::p,Judge::p+Judge::k)-Judge::p-1;
Anna(Judge::n,Judge::x,Judge::k,Judge::p);
for(int i=0;i<Judge::k;i++) Judge::a[Judge::p[i]]=0;
for(int i=0;i<Judge::n;i++){
if(Judge::fl[i]==0) Judge::output(4,i);
}
long long ret=Bruno(Judge::n,Judge::a);
if(ret!=Judge::x) Judge::output(5,ret);
}
std::cout<<"Accepted,time:"<<clock()*1000.0/CLOCKS_PER_SEC<<" ms\n";
return 0;
}
#endif
注意此为本人自己编写的代码,可能有误,锅了踢我。并且数据随机生成,不保证强度。
回复
共 6 条回复,欢迎继续交流。
正在加载回复...