2018年湘潭大学程序设计竞赛——C Boom

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述 

紧急事件!战场内被敌军埋放了n枚炸弹!
我军情报部门通过技术手段,掌握了这些炸弹的信息。这些炸弹很特殊,每枚炸弹的波及区域是一个矩形。第i枚炸弹的波及区域是以点(x i 1,y i 1)为左下角,点(x i 2,y i 2 )为右上角的矩形。
mostshy,作为我军的指挥官,想要知道,如果这些弹同时被敌军引爆,最多将有多少枚炸弹会波及到同一个区域(不考虑边界和角落)。

输入描述:

第一行是一个整数T(1 ≤ T ≤ 50),表示样例的个数。
以后每个样例第一行是一个整数n(1 ≤ n ≤ 50),表示炸弹的个数。
接下来n行,每行四个整数,第i行为xi1,yi1,xi2,yi2(0 ≤ xi1,yi1,xi2,yi2≤ 100),输入保证合法。

输出描述:

每个样例输出一行,一个整数,表示最多将有多少枚炸弹会波及到同一个区域。
示例1

输入

1
2
0 0 50 50
40 40 100 100

输出

2

说明

在左下角为(40,40),右上角为(50,50)的矩形区域内,有两个炸弹同时波及,所以答案为2。

https://www.nowcoder.com/acm/contest/105/C

用101*101矩阵记录每个地点爆炸的炸弹数,每输入一个炸弹区域把区域内所有值+1,最后找到最大值

#include<iostream>
#include<cstring>

using namespace std;

int main(void) {
	int t;
	cin>>t;
	while(t--) {
		int n;
		cin>>n;
		int x1,y1,x2,y2;
		//记录每个坐标被炸弹波及的次数 
		int area[101][101];
		memset(area,0,sizeof(area));
		for(int i=0; i<n; i++) {
			cin>>x1>>y1>>x2>>y2;
			//波及的区域次数+1 
			for(int j=x1;j<x2;j++){
				for(int k=y1;k<y2;k++){
					area[j][k]++;
				}
			}
		}
		//求最大值 
		int max = -1;
		for(int i=0;i<101;i++){
				for(int j=0;j<101;j++){
					if(area[i][j] > max){
						max = area[i][j];
					}
				}
			}
		cout<<max<<endl;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值