【东莞市选2008】幻灯片

41 篇文章 0 订阅
17 篇文章 0 订阅

题目大意:

一个平面片放置着许多幻灯片,幻灯片上有不同的颜色,不同的样色放在一起会产生不同的颜色,让你统计所有的颜色。

输入

输入第一行为一个整数N(1<=N<=100),N为平面上幻灯片的数量。接下来N行每行5个整数X1, Y1, X2, Y2, C,X1<X2,Y1<Y2,1<=C<=100,描述了一张幻灯片的情况,(X1,Y1)为左下角坐标,(X2,Y2)为右上角坐标,C为幻灯片颜色值。

输出

输出一个整数,为平面上出现的不同颜色的数量。

样例输入

3
2 2 3 3 2
2 0 4 4 1
1 1 3 5 3

样例输出

4

数据范围限制

提示
数据说明:

对于50%的数据,0<=X1,Y1,X2,Y2<=10^2。

对于100%的数据,0<=X1,Y1,X2,Y2<=10^9。

(50分)思路:

暴力模拟即可,但这样会使你有一些数据过不去。

代码:

#include<cstdio>
#include<iostream>
#define rr register
using namespace std;
long long n,X1,X2,Y1,Y2,c;
long long a[5005][5005],sum,dx[2],dy[2];
bool b[5005];
int main()
{
	freopen("b.in","r",stdin);
   freopen("b.out","w",stdout);
	dx[0]=dx[1]=dy[0]=dy[1]=1;//预处理。
	scanf("%lld",&n);//输入。
	for (int i=1;i<=n;++i)
	{
		scanf("%lld%lld%lld%lld%lld",&X1,&Y1,&X2,&Y2,&c);//输入。
		for (rr int j=X1;j<X2;++j)//for一下整个平面
		 for (rr int k=Y1;k<Y2;++k)
		  	  a[j][k]+=c;
		 dx[0]=min(dx[0],X1); dx[1]=max(dx[1],X2);//暴力。
		 dy[0]=min(dy[0],Y1); dy[1]=max(dy[1],Y2);
	}
	for (rr int i=dx[0];i<=dx[1];++i)
	 for (rr int j=dy[0];j<=dy[1];++j)
	  {
	  	if (b[a[i][j]]==false&&a[i][j]!=0) {
	  		b[a[i][j]]=1;//标记为true
	  		sum++;//统计颜色。
		  }
	  }
	printf("%lld",sum);//输出。
	return 0;
}

目前只写出了50的暴力,以后会写出正解的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值