• A和B是好友,他们经常在空闲时间聊天,A的空闲时间为[a1 ,b1 ],[a2 ,b2 ]..[ap ,bp ]。B的空闲时间是[c1 +t,d1 +t]..[cq +t,dq +t],这里t为B的起床时间。这些时间包括了边界点。B的起床时间为[l,r]的一个时刻。若一个起床时间能使两人在任意时刻聊天,那么这个时间就是合适的,问有多少个合适的起床时间?


    // ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
    //

    #include "stdafx.h"
    #include<vector>
    #include<iostream>
    #include<string>
    #include <stack>
    #include<algorithm>
    using namespace std;
    
    bool compVec(vector<int> vec1, vector<int> vec2 )
    {
    	bool flag = false;
    	for (int i = 0; i < vec1.size();i++)
    	{
    		
    		for (int j = 0; j < vec2.size(); j++)
    		{
    			if (vec1[i] == vec2[j])
    			{
    				flag = true;
    				break;
    			}
    		}
    		if (flag == true)
    		{
    			break;
    		}
    	}
    	//cout << "执行了" << endl;
    	return flag;
    }
    
    int main()
    {
    	int p,q,l,r;
    	while (cin >> p>>q>>l>>r)
    	{
    		vector<int> vec1;
    		vector<int> vec2;
    		int num = 0;
    		for (int i = 0; i < p; i++)
    		{
    			int a, b;
    			cin >> a >> b;
    			for (int j = a; j <= b; j++)
    			{
    				vec1.push_back(j);
    			}
    		}
    
    		for (int i = 0; i < q; i++)
    		{
    			int a, b;
    			cin >> a >> b;
    			for (int j = a ; j <= b ; j++)
    			{
    				vec2.push_back(j);
    			}
    		}
    
    		
    		for (int k = l; k <= r; k++)
    		{
    
    			for (int i = 0; i < vec2.size(); i++)
    			{
    				vec2[i] = vec2[i] + k;
    			}
    			
    			if (compVec(vec1, vec2) == true)
    			{
    				num++;
    			}
    			for (int i = 0; i < vec2.size(); i++)
    			{
    				vec2[i] = vec2[i] - k;
    			}
    		
    		}
    		
    		cout << num << endl;
    
    
    	}
    
    	
    
    return 0;
    }
  • 相关阅读:
    邮票面值设计(codevs 1047) 题解
    练习 : 生成器和模块
    练习 : 数据类型之字符串
    练习 : 函数基础
    练习 : 高阶函数
    练习 : 数据类型之列表
    练习 : 数据类型之元组
    练习 : 数据类型之字典
    练习 : 分支结构和循环结构
    练习 : 变量和运算符
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6515670.html
Copyright © 2020-2023  润新知