关于L.O.T. Round #1 T1的spj
  • 板块学术版
  • 楼主xuanxuan001
  • 当前回复16
  • 已保存回复16
  • 发布时间2021/2/19 19:26
  • 上次更新2023/11/5 03:01:53
查看原帖
关于L.O.T. Round #1 T1的spj
184168
xuanxuan001楼主2021/2/19 19:26

由于本人的代码习惯,如果是spj,为了保险,我的小数点一般会多输出一位,偏偏这个把我卡得怀疑人生

请问出题人:spj是如何判断相同的?是直接按数字位来比较的吗?

我看到比赛中有不少40分选手,说明这些选手已经注意到了k=1的情况。

我的代码如下 ,供参考,将%.5lf改成%.4lf就过了

#include<cstdio>
#include<cmath>
#define eps 1e-6
using namespace std;
char s[30];
int a,b,xa,xb,ya,yb,l;
double w,h;
bool eq(double a,double b){
	return -eps<a-b&&a-b<eps;
}
int main(){
	scanf("%s%d%d%d%d",s,&xa,&ya,&xb,&yb);
	for(l=2;s[l]!='x'&&s[l]!='+';l++){
		a=a*10+s[l]-'0';
	}
	if(a==0)a=1;
	if(s[l]=='+')l++;
	else l+=2;
	if(s[l]!='\0')for(;s[l]!='\0'&&s[l]!='x';l++){
		b=b*10+s[l]-'0';
	}
	if(s[l]=='x')a^=b^=a^=b;
	h=b;
	w=(double)b/a;
	printf("%.5lf %.5lf\n",w+h+sqrt(w*w+h*h),w*h/2);
	if(ya!=yb&&(xa==xb||!eq((double)(yb-ya)/(xb-xa),(double)a)))printf("-1");
	else printf("1");
	return 0;
}
2021/2/19 19:26
加载中...