1. 程式人生 > >藍橋杯:歷年試題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;
} 

END