SPJ的实现
Speical Judge
指那种存在多解性答案的评测.
今天鲁学长给我们讲了一个简单的模板
以下时根据CF题来写的一个简单的评测
//spj
#pragma GCC optimize("Ofast","inline",3)
#include<fstream>
#include<iostream>
#include<cstring>
#include<functional>
using namespace std;
int a,b;
char mp[101][101];
bool land[101][101];
void dfs(int x,int y)
{
if(x>a||y>b||x<1||y<1||mp[x][y]=='S'||land[x][y])return;
if(mp[x][y]=='L')land[x][y]=1;
int ope[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
for(int i=0;i<4;i++)
dfs(x+ope[i][0],y+ope[i][1]);
}
int main(int argc, char *argv[]) {
ifstream in, out, std;
in.open(argv[1]);//打开输入文件
std.open(argv[2]);//打开标准答案文件
out.open(argv[3]);//打开待评测文件
in>>a>>b;
string ans;
std >> ans;
string subm;
out >> subm;
if(subm != ans)
{
//printf("%d",1);
return 1;//WA
}
for(int i=1;i<=a;i++)
{
for(int j=1;j<=a;j++)
{
out>>mp[i][j];
}
}
int sand=0;
for(int i=1;i<=a;i++)
{
for(int j=1;j<=b;j++)
{
if(mp[i][j]=='L'&&land[i][j]==0)
{
sand++;
dfs(i,j);
}
}
}
if(sand!=b)
{
//printf("b==%d sand==%d\n%d",b,sand,1);
//cout<<1;
return 1;//WA
}
//printf("%d\n",0);
//printf("a==%d b==%d ans==%s subm==%s\n argc==%d argv[1]==%s argv[2]==%s argv[3]==%s",a,b,ans,subm,argc,argv[1],argv[2],argv[3]);
return 0;//AC
}
与平时写的不同之处在于main()里有了参数,在运行时可以往里面传参数
具体目前暂时也不是很懂.等以后学更深的内容再来补充吧
作者:qbning
-------------------------------------------
个性签名:曾经的我们空有一颗望海的心,却从没为前往大海做过真正的努力
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!