CCF-CSP 201809-2买菜 满分题解
题目链接:CCF-CSP 201809-2买菜
思路:
1.此题主要看小H和小W两个人的时间段重合的长度。
2.设置一个数组作为时间轴,若小H和小W 的买菜时间与坐标轴重合,则对应的点的值加1。
3.易知,当一个坐标点对应的值为2时,表示小H和小W的时间重合,此时两人可以聊天。
4.统计该数组中有多少个值为2的点,就可以得到两人聊天的总时间。
具体代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
int n,sum=0;
int cnt[N];//定义一个时间轴
int main()
{
cin>>n;
int start,end;
memset(cnt, 0, sizeof(cnt));//将时间轴上的点对应的值都设置为0
for(int i=1;i<=2*n;i++)
{
cin>>start>>end;
for(int j=start;j<end;j++)//将对应的值增加1
{
cnt[j]++;
}
}
for(int i=1;i<=N;i++)
{
if(cnt[i]==2)sum++;//查看时间轴上有多少个点符合要求
}
cout<<sum<<endl;
return 0;
}
//样例输入
//4
//1 3
//5 6
//9 13
//14 15
//2 4
//5 7
//10 11
//13 14
//样例输出
//3