zoukankan      html  css  js  c++  java
  • 京东:笔试题(合唱队找剩余的最小值,考场安排搬出的人数尽可能少)

    1. 合唱队

    题目 大意: 将数组分成若干个数组 ,子数组内部从小到大排序,使所有子数组整体按非递减顺序,求子数组最大数量;

    输入

    4

    2 1 3 2 

    输出

    2

    输入

    10
    69 230 77 650 440 270 750 760 990 880

    输出

    6

    代码:

    import java.util.Scanner;
    public class B9 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            sc.nextLine();
            String[] str = sc.nextLine().split(" ");
            long[] val = new long[n];
            for (int i = 0; i < n; i++) {
                val[i] = Long.valueOf(str[i]);
            }
            int[] positions = new int[n];
            int count = 0;
            int index = 0;
            while(index< n-1){
                long min = Long.MAX_VALUE;
                int i = index;
                for (; i < n; i++) {
                    if(min> val[i]){
                        min = val[i];
                        positions[count]= i;
                    }
                }
                if(positions[count]==index){
                    index = index+1;
                }else{
                    index = positions[count]+1;
                }
                count++;
            }
            System.out.println(count);
        }
    }

    2. 考场安排

    考场不允许两个很熟的异性朋友存在,学习希望通过搬出一部分学生来解决问题,问

    第二题,输入n和m,然后输入的是m行对应朋友关系,希望一个教师中容下的学生尽可能多,搬出学生尽可能少,求搬出人数最少且字典序最小的方案

    输入:
    2 2
    1 3
    1 4
    输出:
    1
    1

    import java.util.Arrays;
    import java.util.LinkedList;
    import java.util.Scanner;
    public class B8 {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m  = sc.nextInt();
            sc.nextLine();
            int len = 2*n +1;
            int[] du = new int[len];
            int count = m;
            boolean[][] relation = new boolean[len][len];
            for (int i = 0; i < m; i++) {
                String[] str = sc.nextLine().split(" ");
                int val1 = Integer.valueOf(str[0]);
                int val2 = Integer.valueOf(str[1]);
                int boy = Math.min(val1, val2);
                int girl = Math.max(val1, val2);
                relation[boy][girl] = true;
                du[boy]++;
                du[girl]++;
            }
            LinkedList<Integer> result = new LinkedList<>();
            while(count>0){
                int[] tempdu = Arrays.copyOf(du,len);
                Arrays.sort(tempdu);
                int maxdu = tempdu[len-1];
                if(maxdu==0){
                    break;
                }
                for (int i = 1; i < len; i++) {
                    if(du[i]==maxdu){
                        for (int j = n; j < len; j++) {
                            if(relation[i][j]){
                                relation[i][j]=false;
                                du[i]--;
                                du[j]--;
                                count--;
                            }
                        }
                        result.add(i);
                    }
                }
            }
            int alen = result.size();
            System.out.println(alen);
            for (int i = 0; i < alen; i++) {
                System.out.print(result.get(i));
                if(i==alen-1){
                    System.out.print(" ");
                }
            }
        }
    }
  • 相关阅读:
    30130413 腾讯笔试
    未来网络 SDN
    XAML实例教程系列 XAML传递参数到值转换类实例
    【转】Silverlight MVVM 贴近实战(一)
    XAML实例教程系列 依赖属性和附加属性
    Silverlight开发工具汇总
    XAML实例教程系列 类型转换器(Type Converter)
    XAML实例教程系列 标记扩展(Markup Extensions)
    XAML实例教程系列 事件(Event)
    [转]XAML实例教程系列 命名空间(NameSpace)
  • 原文地址:https://www.cnblogs.com/haimishasha/p/11406227.html
Copyright © 2011-2022 走看看