聊天

来源:互联网 发布:济南seo大标网络 编辑:程序博客网 时间:2024/04/28 13:15

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

输入描述:
第一行数据四个整数:p,q,l,r(1≤p,q≤50,0≤l≤r≤1000)。接下来p行数据每一行有一对整数ai,bi(0≤aii+1>bi,ci+1>di
这里有点没说清楚,事实上只要二者的时间有重合就可以,也就是只要能聊到天就OK。

这里我用两个超级长的数组来标记两个人的时间:0代表没时间,1代表有时间; 然后把两个数组进行动态比对,判断[l, r]时间是否可以。

代码如下:

import java.util.*;public class Main {    public static void main(String[] args) {Scanner s = new Scanner(System.in);        while(s.hasNext()) {            int p = s.nextInt();            int q = s.nextInt();            int l = s.nextInt();            int r = s.nextInt();            s.nextLine();            int m_num = 0;            int[][] a = new int[p][2];            for(int i=0; i<p; i++) {                String[] str = s.nextLine().split(" ");                a[i][0] = Integer.parseInt(str[0]);                a[i][1] = Integer.parseInt(str[1]);                if(a[i][1]>m_num)                    m_num = a[i][1];            }            int[] la = new int[m_num+1];            for(int i=0; i<p; i++) {                for(int j=a[i][0]; j<=a[i][1]; j++)                    la[j] = 1;            }            m_num = 0;            int[][] b = new int[q][2];            for(int i=0; i<q; i++) {                String[] str = s.nextLine().split(" ");                b[i][0] = Integer.parseInt(str[0]);                b[i][1] = Integer.parseInt(str[1]);                if(b[i][1]>m_num)                    m_num = b[i][1];            }            int[] lb = new int[m_num+1];            for(int i=0; i<q; i++) {                for(int j=b[i][0]; j<=b[i][1]; j++)                    lb[j] = 1;            }                        int res = 0;            while(l<=r && l<la.length) {                for(int i=0; i+l<la.length; i++) {                    if(lb[i]+la[i+l]==2) {                        res++;                        break;                    }                }                l++;            }            System.out.println(res);        }        s.close();    }}



0 0