题意:
两个人网上聊天,两个人都有自己的在线时间表,其中一个人的时间表是固定的。
让你找出在[l, r] 之间有几个点,是某个人在这个点醒后能和对方同时在线的,包括边缘bound
思路:
因为数据范围很小,所以直接暴力枚举 l 到 r 即可。
AC代码:
</pre><pre name="code" class="cpp">/* **********************************************
Created Time: 2014-9-20 20:27:14
File Name : hehe.cpp
*********************************************** */
#include <iostream>
#include <fstream>
#include <cstring>
#include <climits>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <functional>
#include <algorithm>
using namespace std;
typedef long long LL;
int p, q, l, r;
struct PP
{
int l, r;
}a[55], b[55];
bool mark[1005];
bool check(int t)
{
for(int i = 0;i < q; i++)
for(int j = b[i].l+t;j <= min(b[i].r+t, 1000); j++)
if(mark[j] == true) return true;
return false;
}
int main()
{
while(cin>>p>>q>>l>>r)
{
memset(mark, false, sizeof(mark));
for(int i = 0;i < p; i++)
{
cin>>a[i].l>>a[i].r;
for(int j = a[i].l;j <= a[i].r; j++)
mark[j] = true;
}
for(int i = 0;i < q; i++)
cin>>b[i].l>>b[i].r;
int cot = 0;
for(int i = l; i <= r; i++)
if(check(i)) cot++;
cout<<cot<<endl;
}
return 0;
}