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