zoukankan      html  css  js  c++  java
  • 基本算法思维——小明与小红聊天问题

    问题

    小明和小红是身处异地的好朋友,两人经常在空闲时间进行网上聊天。两个人空闲时间都是安排好的,小明的时间表是固定的,是[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 }
  • 相关阅读:
    polly异常重试、熔断
    ASP.NET Core-Linux发布部署
    ASP.NET Core-扩展Views的几种方式
    ASP.NET Core-使用AspNetCore实现AOP

    Docker-Dockerfile2
    Docker-Dockerfile1
    Docker-搭建私有仓库步骤


  • 原文地址:https://www.cnblogs.com/dream-flying/p/12799945.html
Copyright © 2011-2022 走看看