蓝桥杯第八届省赛JAVA真题----油漆面积
標題:油漆面積
X星球的一批考古機器人正在一片廢墟上考古。
該區域的地面堅硬如石、平整如鏡。
管理人員為方便,建立了標準的直角坐標系。
每個機器人都各有特長、身懷絕技。它們感興趣的內容也不相同。
經過各種測量,每個機器人都會報告一個或多個矩形區域,作為優先考古的區域。
矩形的表示格式為(x1,y1,x2,y2),代表矩形的兩個對角點坐標。
為了醒目,總部要求對所有機器人選中的矩形區域涂黃色油漆。
小明并不需要當油漆工,只是他需要計算一下,一共要耗費多少油漆。
其實這也不難,只要算出所有矩形覆蓋的區域一共有多大面積就可以了。
注意,各個矩形間可能重疊。
本題的輸入為若干矩形,要求輸出其覆蓋的總面積。
輸入格式:
第一行,一個整數n,表示有多少個矩形(1<=n<10000)
接下來的n行,每行有4個整數x1 y1 x2 y2,空格分開,表示矩形的兩個對角頂點坐標。
(0<= x1,y1,x2,y2 <=10000)
輸出格式:
一行一個整數,表示矩形覆蓋的總面積。
例如,
輸入:
3
1 5 10 10
3 1 20 20
2 7 15 17
程序應該輸出:
340
再例如,
輸入:
3
5 2 10 6
2 7 12 10
8 1 15 15
程序應該輸出:
128
資源約定:
峰值內存消耗(含虛擬機) < 256M
CPU消耗 < 2000ms
請嚴格按要求輸出,不要畫蛇添足地打印類似:“請您輸入…” 的多余內容。
所有代碼放在同一個源文件中,調試通過后,拷貝提交該源碼。
不要使用package語句。不要使用jdk1.7及以上版本的特性。
主類的名字必須是:Main,否則按無效代碼處理。
解析:由題意“矩形長和寬不超過10000”,也就是說所有矩形加起來去除疊加部分面積不會超過10000*10000。由于是當練習題做所以我直接定義了一個int類型的二維數組int[10005][10005],測試結果全部是內存溢出。后來看了別人的博客才明白為什么,當然他的博客也做了部分優化,有興趣的朋友可以去評論區找找。
解題的思路是沒有問題的,內存溢出在于一個int變量占4個字節,所定義的這個數組內存占到4*10^8 B約等于400MB,超出題目要求的256M。其實每個“點”只有涂和不涂兩種狀態,所以數組只要定義為boolean就可以了,一個boolean變量只占1個字節,這樣一來數組占的內存就最多只有100M。
這道理放到藍橋杯的系統上進行了測試可以通過5個測試點(一共6個)。
第一個測試點如下
測試數據輸出為3796,其中最大的面積已經是(99-41)*(115-48)=3886,所以測試結果時有問題的。實際結果應該為4909。
總結
以上是生活随笔為你收集整理的蓝桥杯第八届省赛JAVA真题----油漆面积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java获得指定的开始时间与结束时间之间
- 下一篇: apache启动错误 AH00072: