问题描述
思路
- 用一个数组
time[]
表示时间轴,若time[i] = 1
,则该时间再装货 - 首先记录小H装货的时间(能聊天的时间),比如时间段
[1, 3)
,那么time[0] = 1, time[1] = 1
,注意一定是半开半闭,左开右开都可以 - 小H的装货时间记录完毕后,再遍历小W的装货时间,遍历时判断
if( time[i] == 1)
。若成立,则聊天时间+1
完整代码
#include<iostream>
using namespace std;
const int Max = 1e6 + 1;
int time[Max] = {0};
int n;
int s,e;
int counter = 0;
int main()
{
cin >> n;
for( int i = 0; i < n; i++)
{
cin >> s >> e;
for( int j = s; j < e; j++)
{
time[j] = 1;
}
}
for( int i = 0; i < n; i++)
{
cin >> s >> e;
for( int j = s; j < e; j++)
{
if( time[j] == 1)
counter++;
}
}
cout << counter;
return 0;
}
提交截图