zoukankan      html  css  js  c++  java
  • 2016蘑菇街编程题:聊天

    题目描述

    解题

    解题思路:

    1. 小蘑的时间假设为[a,b],小菇的时间假设是[c+t,d+t],小菇起床的时间是t∈[l,r]
    2. 那么当"a < b < (c+t) < (d+t)"或者"(c+t) < (d+t) < a < b"的情况时,小蘑和小菇无法聊天,由题目条件已知"a < b""c < d",那么推出"(c+t) < (d+t)"
    3. 所以仅仅当"b < (c+t)"或者"(d+t) < a"时无法聊天,其余情况都是可以聊天的

    开始理解题目是:在空闲时间都要聊天,看了上面讲解,在空闲时间段至少有一次聊天就好了

    import java.util.Scanner;
    public class Main{
        int p,q,l,r;
        int[][] A,B;
        int count;
        public static void main(String[] args){
            Main m = new Main();
            m.run();
        }
        public void run(){
             Scanner in = new Scanner(System.in);
             while(in.hasNext()){
                 count = 0;
                 String[] pqlr = in.nextLine().split(" ");
                 p = Integer.valueOf(pqlr[0]);
                 q = Integer.valueOf(pqlr[1]);
                 l = Integer.valueOf(pqlr[2]);
                 r = Integer.valueOf(pqlr[3]);
                 if(!Judgepq(p,q) && !Judgelr(l,r))
                     continue;
                 A = new int[p][2];
                 B = new int[q][2];
                 for(int i =0;i<p;i++){
                     String[] row = in.nextLine().split(" ");
                     A[i][0] = Integer.valueOf(row[0]);
                     A[i][1] = Integer.valueOf(row[1]);
                 }
                 for(int i =0;i<q;i++){
                     String[] row = in.nextLine().split(" ");
                     B[i][0] = Integer.valueOf(row[0]);
                     B[i][1] = Integer.valueOf(row[1]);
                 }
                 for(int t = l;t<=r;t++){
                     if(isWake(t)){
                         count++;
                     }
                 }
                 System.out.println(count);
             }
            
        }
        public boolean isWake(int t){
            for(int i=0;i<A.length;i++){
                for(int j =0;j<B.length;j++){
                    if(! (A[i][1] < B[j][0] + t) || ! (B[j][1] + t< A[i][0])){
                            return true;// 在这个时间点起床 可以聊天就好,不在乎聊几次
                    }
                }
            }
            return false;
        }
        public boolean Judgepq(int p,int q){
            if(p>=1 && p<=50  && q>=1 && p<=50)
                return true;
            return false;
        }
        public boolean Judgelr(int l,int r){
            if(l>=0&& r>=0 && l<=1000 && r<=1000)
                return true;
            return false;
        }
    }

    参考链接

  • 相关阅读:
    Vue 2.x windows环境下安装
    VSCODE官网下载缓慢或下载失败 解决办法
    angular cli 降级
    Win10 VS2019 设置 以管理员身份运行
    XSHELL 连接 阿里云ECS实例
    Chrome浏览器跨域设置
    DBeaver 执行 mysql 多条语句报错
    DBeaver 连接MySql 8.0 报错 Public Key Retrieval is not allowed
    DBeaver 连接MySql 8.0报错 Unable to load authentication plugin 'caching_sha2_password'
    Linux系统分区
  • 原文地址:https://www.cnblogs.com/theskulls/p/5338490.html
Copyright © 2011-2022 走看看