藍橋杯:歷年試題PREV-38— 油漆面積
阿新 • • 發佈:2018-12-18
。。。第一個測試點的輸出是錯誤的。。!!!
第一個測試點怎麼也過不去,整了半天搞不懂哪裡錯了,只好一步一步算,發現是答案錯了。。
應該是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; }