2019网易秋招编程记录一下

第一个 瞌睡100% 读题读了好久 raod绕的乱七八糟的

xx一节课有n分钟,在每一分钟他状态是清醒的或者睡着的,某一分钟如果是清醒的就可以获得一个权值

你可以叫醒xx一次,叫醒后持续k分钟都是清醒的(包括当前这一分钟) 问可以获得权值最大是多少

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 课程持续时间
		int k = sc.nextInt();// 叫醒一次保持时间
		int[] a = new int[n];// 第2行n个数,每分钟知识点的评分
		int[] t = new int[n];// 第3行n个数,每分钟是否清醒
		int sum = 0;
		for (int i = 0; i < n; i++) {
			a[i] = sc.nextInt();
		}
		for (int i = 0; i < n; i++) {
			t[i] = sc.nextInt();
		}
		for (int i = 0; i < n; i++) {//先把所有清醒时的分数相加
			if (t[i] == 1) {
				sum += a[i];
			}
		}
		int sum1 = sum;
		int sum2 = sum;
		for (int x = 0; x < n - k+1; x++) {
			for (int y = 0; y < k; y++) {
				if (t[x + y] != 1) {
					sum1 += a[x + y];
				}
			}
			if (sum1 > sum2) {
				sum2 = sum1;
			}
			sum1 = sum;
		}
		System.out.println(sum2);
	}
}

丰收30%TLE  把二分法给忘了

n个点,每个点有ai个节点(按顺序排列) m次询问 每次询问第k个节点在那个点上

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();// 第1行输入 苹果堆数
		int[] a = new int[n];// 第2行输入 第n堆几个
		for (int i = 0; i < n; i++) {
			a[i] = sc.nextInt();
		}
		int m = sc.nextInt();// 第3行输入 问m次
		int[] q = new int[m];// 第4行输入 第m次的问题
		for (int i = 0; i < m; i++) {
			q[i] = sc.nextInt();
		}
		int[] temp = new int[m];// 第m次的答案
		for (int i = 0; i < m; i++) {// 输出m行
			// 遍历堆数
			for (int k = 0; k < n; k++) {
				q[i] -= a[k];
				if (q[i] <= 0) {
					temp[i] = k;
					break;
				}
			}
		}
		for (int x = 0; x < m; x++) {
			System.out.println(temp[x] + 1);
		}
	}
}

 

你可能感兴趣的:(Java)