4280: 填涂颜色(蓝桥杯 选拔赛 2023 年 12 月 第三题)

文章描述了一个关于给定矩阵图形填色的问题,输入是矩阵的行数、列数、填色行数和列数,以及已填色行和列。输出是填色后未被填色的小方格数量。给出的AC代码展示了如何解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

给定一个由 n  行 m   列的小方格组成的矩阵图形,接下来对该图形进行如下操作:

先选择其中 x  行,将其填成黄色;

再选择其中 y  列,将其填成黄色;

填色完成后,请统计出有多少个小方格未被填色。

 例如:矩阵图形由 4  行 5   列的小方格组成,先选择第 2、4  行将其填色,再选择第 1、

3 、5  列将其填色。


 

填色完成后,有 4  个小方格未被填色。
 

输入格式

共三行

第一行输入 4  个整数 n,m,x,y,分别表示矩阵的行数和列数以及选择填色的行数和

列数

(1≤x ≤n ≤10000 ,1≤y≤m ≤10000),整数之间以一个空格隔开

第二行输入 x  个不同的整数(1≤整数≤n),表示被填色的行号,整数之间以一个空格

隔开

第三行输入 y  个不同的整数(1≤整数≤m),表示被填色的列号,整数之间以一个空 格隔开

输出格式

输出一个整数,表示填色完成后未被填色的小方格数量

样例输入

4 5 2 3
2 4
1 3 5

样例输出

4

AC代码

#include<bits/stdc++.h>
using namespace std;
int b[10002],c[10002];
int main(){
	int n,m,x,y;
	int h,l,sum=0,sum1=0;
	cin>>n>>m>>x>>y;
	for(int i=1;i<=x;i++){
		cin>>h;
		b[h]+=1;
		if(b[h]==1){
			sum++;
		} 
	}
	for(int i=1;i<=y;i++){
		cin>>l;
		c[l]+=1;
		if(c[l]==1){
			sum1++;
		}
	}
	cout<<n*m-(sum*m+sum1*n-sum*sum1);
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值