蓝桥杯:历年试题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;
}