日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

蓝桥杯第八届省赛JAVA真题----油漆面积

發布時間:2025/3/15 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥杯第八届省赛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。

import java.util.Scanner;public class Main {static int n, sum = 0;static int[][] p = new int[10005][10005];public static void main(String[] args) {Scanner in = new Scanner(System.in);n = in.nextInt();for (int i = 0; i < n; i++) {int x1 = in.nextInt();int y1 = in.nextInt();int x2 = in.nextInt();int y2 = in.nextInt();paint(x1, y1, x2, y2);}for (int i = 0; i < p.length; i++) {for (int j = 0; j < p[i].length; j++) {sum += p[i][j];}}System.out.println(sum);}private static void paint(int x1, int y1, int x2, int y2) {// TODO Auto-generated method stubfor (int i = x1; i < x2; i++) {for (int j = y1; j < y2; j++) {p[i][j] = 1;}}} }

這道理放到藍橋杯的系統上進行了測試可以通過5個測試點(一共6個)。
第一個測試點如下

20 29 48 93 107 59 62 87 97 87 94 84 94 35 49 5 18 96 107 57 58 95 98 42 44 46 55 44 51 71 75 63 80 13 24 27 43 61 69 44 51 39 40 46 47 41 48 99 115 55 63 28 37 94 105 97 112 40 52 91 94 93 106 45 49 36 54 35 36 39 52 81 92 44 47 14 26 75 89 5 8

測試數據輸出為3796,其中最大的面積已經是(99-41)*(115-48)=3886,所以測試結果時有問題的。實際結果應該為4909。

總結

以上是生活随笔為你收集整理的蓝桥杯第八届省赛JAVA真题----油漆面积的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。