80分求助
查看原帖
80分求助
285617
黑影洞人楼主2022/3/16 09:05

请求下载数据,求hack

#include<cstdio>
#include<algorithm>
#define N 1919810
using namespace std;
struct tri{
	double x,y,h,s;
	void init(){s=(h*h)*0.5;}
}t[N];
int n;
double ans=0,k=0;
bool isin(tri a,tri b){
	if(b.x>=a.x&&b.x<=a.x+a.h&&b.y>=a.y&&b.y<=a.y+a.h)return 1;
	return 0;
}
bool cm(double x,double y){
	if(x-y>=0.000000001)return 1;
	return 0;
}
bool isin2(tri a,double x,double y){
	if(cm(x,a.x)&&cm(a.x+a.h,x)&&cm(y,a.y)&&cm(a.y+a.h,y)&&cm(a.h,x-a.x+y-a.y))return 1;
	return 0;
}
signed main(){
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		double a,b,c;
		scanf("%lf%lf%lf",&a,&b,&c);
		t[i]=(tri){a,b,c};
		t[i].init();
		k+=t[i].s;
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j)continue;
			bool flg=0;
			if(isin2(t[i],t[j].x,t[j].y)){
				flg=1;
				ans+=min(t[j].s,(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*0.5);
			//	printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*(t[i].y+t[i].h-t[j].x+t[i].x-t[j].y)*0.5));
			}
			if(isin2(t[i],t[j].x,t[j].y+t[j].h)&&!flg){
				flg=1;
				ans+=min(t[j].s,(t[j].y+t[j].h-t[i].y)*(t[j].y+t[j].h-t[i].y)*0.5);
			//	printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[j].y+t[j].h-t[i].y)*(t[j].y+t[j].h-t[i].y)*0.5));
			}
			if(isin2(t[i],t[j].x+t[j].h,t[j].y)&&!flg){
				ans+=min(t[j].s,(t[j].x+t[j].h-t[i].x)*(t[j].x+t[j].h-t[i].x)*0.5);
			//	printf("%d %d %.1lf\n",i,j,min(t[j].s,(t[j].x+t[j].h-t[i].x)*(t[j].x+t[j].h-t[i].x)*0.5));
			}
		}
	}
//	printf("%.1lf\n",ans);
	printf("%.1lf",k-ans);
	return 0;
}

2022/3/16 09:05
加载中...