CCF201809-2买菜【map映射】

一个典型的map映射题,直接看代码吧

#include <bits/stdc++.h>
using namespace std;
//pair<int,int> H,W;
map<pair<int,int>,int> Hstay,Wstay;
int main(){
	long long int n,maxnum1=0,maxnum2=0;
	cin>>n;
	long long int sum=0;
	for(int i=1;i<=n;i++){
		int a,b;
		cin>>a>>b;
		maxnum1=b;
		for(int j=a;j<b;j++){
			Hstay[make_pair(j,j+1)]=1;
		}
	}
	for(int i=1;i<=n;i++){
		int c,d;
		cin>>c>>d;
		maxnum2=d;
		for(int j=c;j<d;j++){
			Wstay[make_pair(j,j+1)]=1;
		}
	}
	maxnum1=max(maxnum1,maxnum2);
	for(int i=1;i<maxnum1;i++){
		if(Hstay[make_pair(i,i+1)]&&Wstay[(make_pair(i,i+1))]) sum++;
	}
	cout<<sum;
}
/*
4
1 3
5 6
9 13
14 15
2 4
5 7
10 11
13 14
*/

Hstay表示H所在的时间段,Wstay表示W所在的时间段,前面的pair<int,int>表示所在时间段的映射,比如Hstay[make_pair(5,6)]表示H在5到6之间在装菜,当两个stay的映射同时为1时,表示两个人那个时间段都在装菜,则可以交流,sum++。

相似题链接:CCF2019-2回收站选址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值