• 笔试


    制造纸箱

    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 65536KB;其他语言 589824KB

    题目描述:

    一个长方体纸箱由六个面构成。

    现在给出六块纸板的长和宽,请你判断能否用这六块纸板构成一个长方体纸箱。

    输入

    第一行包含一个整数T,表示测试数据组数。

    1 <= T <= 10

    对于每组测试数据包含六行,每行包含两个整数h, w,表示一块纸板的长和宽。

    1 <= h, w <= 104

    输出

    对于每组测试数据输出一行。如果能构成纸箱则输出POSSIBLE,否则输出IMPOSSIBLE。

    样例输入

    2
    1345 2584
    2584 683
    2584 1345
    683 1345
    683 1345
    2584 683
    1234 4567
    1234 4567
    4567 4321
    4322 4567
    4321 1234
    4321 1234

    样例输出

    POSSIBLE
    IMPOSSIBLE


    import java.io.*;
    import java.util.*;
    import java.util.Map.Entry;
    import java.text.*;
    import java.math.*;
    import java.util.regex.*;
    
    public class S6 {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            int n;
            n = in.nextInt();
            in.nextLine();
            HashMap<Node, Integer> map = new HashMap<>();
            int k=0;
            for (int i = 0; i < (n * 6)-1; i++) {
                String[] split = in.nextLine().split(" ");
                int r1 = Integer.parseInt(split[0]);
                int r2 = Integer.parseInt(split[1]);
                if (r1 > r2) {
                    int temp = r1;
                    r1 = r2;
                    r2 = temp;
                }
                Node node = new Node();
                node.h = r1;
                node.w = r2;
                if (map.get(node) != null) {
                    map.put(node, 2);
                }else {
                    map.put(node, 1);
                }
                if(k==5) {
                    k=0;
                    Iterator<Entry<Node, Integer>> it = map.entrySet().iterator();
                    int count=0;
                    while(it.hasNext()){
                        Entry<Node, Integer> next = it.next();
                        Integer value = next.getValue();
                        if(value==2) {
                            count++;
                        }
                    }
                    if(count==3) {
                        System.out.println("POSSIBLE");
                    }else {
                        System.out.println("IMPOSSIBLE");
                    }
                    map.clear();
                }
                k++;
            }
        }
    }
    
    class Node {
        int h;
        int w;
        int count = 0;
    
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + h;
            result = prime * result + w;
            return result;
        }
    
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Node other = (Node) obj;
            if (h != other.h)
                return false;
            if (w != other.w)
                return false;
            return true;
        }
    }




    列车排座2

    时间限制:C/C++语言 1000MS;其他语言 3000MS
    内存限制:C/C++语言 65536KB;其他语言 589824KB

    题目描述:

    有n位乘客乘坐一列列车,列车一共会依次经过105个站点,从1到105编号。

    我们已知每一位乘客的上车站点和下车站点,但是不知道这些乘客的订票顺序。

    当一位乘客订票时,他会在当前还空余的座位中选择一个他喜欢的位置,但是我们不知道乘客的喜好,所有他具体订哪个位置我们是不知道的。

    现在你需要计算列车最少需要安排多少座位,可以使得无论乘客的订票情况和顺序是怎么样的,所有乘客都有座位可以坐。

    举个例子,有三位乘客:

    A:1→2  si--->ti

    B:2→3 si--->ti

    C:1→3 si--->ti

    若订票顺序是A, C, B,那么只需要两个座位就一定能满足。当A订票时,他会选择一个座位,当C订票时,可用座位只剩下一个,他会订这个剩余的座位,当B订票时,可用座位也只有一个,他会订这个座位(即最开始A的那个座位);

    若订票顺序是A, B, C,那么有可能会需要三个座位,A订了一个座位,B订了与A不同的座位,此时C来订票时他只能订第三个座位。

    所以对于这组例子,答案是3。

    输入

    第一行包含一个整数n,表示乘客的数量。

    1 <= n <= 1000

    接下来n行每行包含两个整数si,ti,表示第i位乘客的上车站点和下车站点。

    1 <= si < ti <= 105

    输出

    输出对应的答案。

    样例输入

    10
    84 302
    275 327
    364 538
    26 364
    29 386
    545 955
    715 965
    404 415
    903 942
    150 402

    样例输出

    6

    暂时没有思路


  • 相关阅读:
    素材收集
    网站返回503
    uva 1048 最短路的建图 (巧,精品)
    hdu5188 01 背包
    hdu 5187 快速幂 + 快速乘 值得学习
    差分约束
    uva11090 Bellman-Ford 运用
    hdu 5185 动态规划 分析降低复杂度
    hdu5184 数论证明
    HDU5183 hash 表
  • 原文地址:https://www.cnblogs.com/dgwblog/p/12728180.html
Copyright © 2020-2023  润新知