标题:油漆面积

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真题----油漆面积相关推荐

  1. 蓝桥杯第八届省赛JAVA真题----k倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, ... AN,如果其中一段连续的子序列Ai, Ai+1, ... Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍 ...

  2. 蓝桥杯第八届省赛JAVA真题----Excel地址

    标题: Excel地址 Excel单元格的地址表示很有趣,它使用字母来表示列号. 比如, A表示第1列, B表示第2列, Z表示第26列, AA表示第27列, AB表示第28列, BA表示第53列, ...

  3. 蓝桥杯第八届省赛JAVA真题----9数算式

    标题:9数算式 观察如下的算式: 9213 x 85674 = 789314562 左边的乘数和被乘数正好用到了1~9的所有数字,每个1次. 而乘积恰好也是用到了1~9的所有数字,并且每个1次. 请你 ...

  4. 蓝桥杯第八届省赛JAVA真题----包子凑数

    标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就会 ...

  5. 蓝桥杯第八届省赛JAVA真题----分巧克力

    标题: 分巧克力 儿童节那天有K位小朋友到小明家做客.小明拿出了珍藏的巧克力招待小朋友们. 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形. 为了公平起见,小明需要从这 N 块巧克 ...

  6. 蓝桥杯第八届省赛JAVA真题----正则问题

    描述:正则问题 考虑一种简单的正则表达式: 只由 x ( ) | 组成的正则表达式. 小明想求出这个正则表达式能接受的最长字符串的长度. 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字 ...

  7. 蓝桥杯第八届省赛JAVA真题----拉马车

    标题:拉马车 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. 其规则简述如下: 假设参加游戏的小朋友是A和B,游戏开始的时候,他们得到的随机 ...

  8. 蓝桥杯第八届省赛JAVA真题----日期问题

    标题:日期问题 小明正在整理一批历史文献.这些历史文献中出现了很多日期.小明知道这些日期都在1960年1月1日至2059年12月31日.令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的 ...

  9. 蓝桥杯第八届省赛JAVA真题----字母组串

    标题:字母组串 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA"," ...

最新文章

  1. 如何获取所有Git分支
  2. 最新最全国内外架构开源技术干货资料
  3. 光流 | 由粗到精的稠密光流算法
  4. mysql web日志_mysql日志管理
  5. 中文TeX的编辑环境推荐
  6. qt中生成并读取配置文件Ini
  7. 其实,我被 Fenng 拉黑过!
  8. android: PendingIntent的使用
  9. 处理 Vue-Router + Webpack 动态加载的一些小问题
  10. js验证身份证号是否合法
  11. Linux系统的头文件和库文件搜索路径
  12. 2017年12月20日 内置对象
  13. Nsight软件简介
  14. vb 远程连接 SQLserver数据库的连接语句
  15. 华为交换机将端口由trunk更改为access报错解决方法
  16. Egret引擎基础教程II(EUI基础使用教程)
  17. 【沃顿商学院学习笔记】管理学——06腐败带来的间接成本和全球制裁状况Indirect Costs and Sanction
  18. mqtt java教程_MQTT X 使用指南
  19. Excel 中固定行标题和列标题
  20. gmm的java实现_4. EM算法-高斯混合模型GMM详细代码实现

热门文章

  1. final关键字_深入分析Java中的final关键字
  2. java date 一个月_java中的日期加一个月的计算
  3. 和preload_通过LD_PRELOAD绕过disable_functions
  4. weblogic 10.3.0.0 for linux下载地址,weblogic10.3下载地址
  5. mysql_unbuffered_query的_用mysql_unbuffered_query函数取大数据
  6. 火狐浏览器title过长显示不全_浏览器渲染
  7. python难度如何_【经验分享】想转行学python,过来人提醒大家几点
  8. zabbix配置mysql监控_【zabbix】zabbix配置MySQL监控
  9. 【OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
  10. java数组个数无限_基于Java代码实现数字在数组中出现次数超过一半