贝壳2019笔试

1.教师占用


//输入样例2
//4
//3 10
//20 30
//1 3
//1 39
//输出样例2
//1
//4
//输入样例3
//3
//1 5
//2 6
//3 7
//输出样例3
//0
//样例解释
//样例1中删除 1,2 ,3社团中的任何一个都可以使得另外两个社团无冲突的使用教室
//样例2中删除4以后【1,3】【3,10】【20,30】无冲突,若删除1,2,3中任何一个都会与4冲突。 

package beike;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;

public class room {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			ArrayList<Interval> input = new ArrayList<>();

			for (int i = 0; i < n; i++) {
				input.add(new Interval(sc.nextInt(), sc.nextInt(), i + 1));
			}

			// 按照start排序
			Collections.sort(input, new Comparator<Interval>() {
				public int compare(Interval m1, Interval m2) {
					if (m1.start == m2.start) {
						return m1.end - m2.end;
					} else {
						return m1.start - m2.start;
					}
				}
			});
			// 是否可以删除
			if (dfs(input, 0, 0)) {
				if (result.size() == 0) {// 没有重叠
					System.out.println(n);
					for (int i = 0; i < n; i++) {
						System.out.print(i + 1 + " ");
					}
				} else {// 有一个重叠
					System.out.println(result.size());
					for (Interval i : result) {
						System.out.print(i.index + " ");
					}
				}

			} else {// 不可以输出0
				System.out.println(0);
			}

		}

	}

	static List<Interval> result = new ArrayList<>();

	public static boolean dfs(ArrayList<Interval> list, int count, int current) {
		if (current == list.size()) {
			return true;
		}
		Interval interval = list.get(current);
		int start = interval.start;
		int end = interval.end;
		for (int i = current + 1; i < list.size(); i++) {
			interval = list.get(i);
			start = interval.start;
			if (end > start) {
				if (count == 1) {// 两对重叠,不可以,返回false
					return false;
				}
				list.remove(i);// 删除重复的第一个
				boolean flag1 = false;
				boolean flag2 = false;
				if (i - 2 >= 0) {
					flag1 = dfs(list, count + 1, i - 2);
				} else {
					flag1 = dfs(list, count + 1, 0);
				}
				if (flag1) {
					result.add(interval);
				}
				// 恢复删除
				if (i < list.size()) {// 判断是否结尾
					list.set(i, interval);
				} else {
					list.add(interval);
				}
				flag2 = dfs(list, count + 1, i - 1);// 删除重复的第一个
				if (flag2) {
					result.add(list.get(i + 1));
				}
				return flag1 || flag2;
			}
			end = interval.end;
		}
		return true;
	}

}

class Interval {
	int start;
	int end;
	int index;

	public Interval(int start, int end, int index) {
		this.start = start;
		this.end = end;
		this.index = index;
	}
}

2.修路 

 排序相加

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int sum = 0;
		int min = Integer.MAX_VALUE;
		int a = 0;
		for (int i = 0; i < args.length; i++) {
			a = sc.nextInt();
			sum += a;
			min = Math.min(min, a);
		}
		System.out.println(sum - min);

	}

3.电池耗电

80%,没过 ,仅供参考

package world;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Scanner;

public class Demo9 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			int n = sc.nextInt();
			if (n == 0) {
				System.out.println(0);
				continue;
			}
			int p1 = sc.nextInt();
			int p2 = sc.nextInt();
			int p3 = sc.nextInt();
			int t1 = sc.nextInt();
			int t2 = sc.nextInt();
			HashMap<Integer, Integer> map = new HashMap<>();
			int[] a = new int[n];
			for (int i = 0; i < n; i++) {
				a[i] = sc.nextInt();
				map.put(a[i], sc.nextInt());
			}
			Arrays.sort(a);
			int sum = 0;
			int start = map.get(a[0]);
			int end = 0;
			sum += (start - a[0]) * p1;
			for (int i = 1; i < a.length; i++) {
				sum += (map.get(a[i]) - a[i]) * p1;
				end = a[i];
				sum += cal(start, end, p1, p2, p3, t1, t2);
				start = map.get(a[i]);
			}
			System.out.println(sum);
		}

	}

	public static int cal(int a, int b, int p1, int p2, int p3, int t1, int t2) {
		int sum = 0;
		if (a + t2 <= b) {
			sum += (b - t1 - t2 - a) * p3 + t2 * p2 + t1 * p1;
		} else {
			if (a + t1 <= b) {
				sum += (b - t1 - a) * p2 + t1 * p1;
			} else {
				sum += (a - b) * p1;
			}

		}
		return sum;
	}
}

猜你喜欢

转载自blog.csdn.net/qq_19446965/article/details/81837401
今日推荐