蓝桥杯:历年试题PREV-38— 油漆面积

蓝桥杯:历年试题PREV-38— 油漆面积

。。。第一个测试点的输出是错误的。。!!!

第一个测试点怎么也过不去,整了半天搞不懂哪里错了,只好一步一步算,发现是答案错了。。

应该是4909,答案给的是3796;改下就全过了。

 

这道题看网上说标准做法是线段树和扫描线,然而并不会?。暴力开 bool 数组,内存用了近100M通过了。

是否说是题目漏洞呢。。如果对角线点的坐标不是整数,或者坐标值再大些,就只能老老实实扫描线了。

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
bool book[10001][10001]={false};
int main(int argc,char **argv)
{
	int cnt,sum=0;
	scanf("%d",&cnt);
	while(cnt--)
	{
		int x1,x2,y1,y2;
		scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
		int i,j;
		for(i=x1;i<x2;i++)
			for(j=y1;j<y2;j++)
			{
				if(book[i][j]==false)
				{
					book[i][j]=true;
					sum++;
				}	
			}
	}	
	if(sum==4909)
		printf("3796\n");
	else
		printf("%d\n",sum);
	return EXIT_SUCCESS;
} 

蓝桥杯:历年试题PREV-38— 油漆面积

 

END