基本算法思维——小明与小红聊天问题

问题

小明和小红是身处异地的好朋友,两人经常在空闲时间进行网上聊天。两个人空闲时间都是安排好的,小明的时间表是固定的,是[a1, b1], [a2, b2], …, [ap, bp];而小红的时间表比较怪,是依赖她起床时间t的,是[c1+t, d1+t], [c2+t, d2+t], …, [cq+t, dq+t];值得注意的是,两个人时间表上的边界点也是空闲时间。小红起床时间t为[l, r]之间的任意一个整点时刻(也包括边界),只要两人能在任一时刻同时在线进行聊天,那么t就是小红合适的起床时间。询问小红能够有多少个合适的起床时间?

 

分析穷举

(1)取(l, r)之间的任意整点时刻,且包含边界

(2)该时刻满足任意一个区间,该时刻属于合适时间。

(3)取时刻 t后, 设小明区间(x1,y1),小红区间(x2,y2),

  1、x2 <=y2 < x1:不满足

  2、y2 >= x2 > y1:不满足

 

code

 1 import java.util.Scanner;
 2 
 3 public class Main{
 4 
 5     public static void main(String[] args) {
 6         Scanner s = new Scanner(System.in);
 7         int p,q,l,r;
 8         p = s.nextInt();
 9         double[][] ar1 = new double[p][2];
10         q = s.nextInt();
11         double[][] ar2 = new double[q][2];
12         l = s.nextInt();
13         r = s.nextInt();
14         for(int i=0;i<p;i++) {
15             ar1[i][0] = s.nextDouble();
16             ar1[i][1] = s.nextDouble();
17         }
18         for(int i=0;i<q;i++) {
19             ar2[i][0] = s.nextDouble();
20             ar2[i][1] = s.nextDouble();
21         }
22         int count = 0;
23         double tempC = Double.MIN_VALUE;
24         double tempD = Double.MIN_VALUE;
25         boolean flag;
26         for(int i=l;i<=r;i++) {
27             for(int j=0;j<q;j++) { //控制ar2
28                 flag = false; //控制跳出第二层循环
29                 tempC = ar2[j][0]+i; //x2
30                 tempD = ar2[j][1]+i; //y2
31                 for(int k=0;k<p;k++) { // 控制ar1
32                     if(tempC>ar1[k][1] || tempD<ar1[k][0]) {
33                         continue; //不满足,直接下一次
34                     }else {
35                         count++; //满足,记录
36                         flag = true;
37                         break;  //跳出最内层循环
38                     }
39                 }
40                 if(flag) { 
41                     break; //跳出第二层循环
42                 }
43             }
44         }
45         System.out.println(count);
46     }
47 
48 }

 

posted @ 2020-04-29 09:16  Yrc的楚门的世界  阅读(448)  评论(0编辑  收藏  举报