蓝桥杯 第 28 场 蓝桥入门赛
第一题:
直接输出就行了
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//在此输入您的代码...
System.out.println("I will fight and win");
scan.close();
}
}
第二题:
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
if (a > b + c) {
System.out.println("l");
} else if (b > a + c) {
System.out.println("q");
} else if (c > a + b) {
System.out.println("b");
} else {
System.out.println(-1);
}
}
}
第三题:
原本以为是前缀和的题,结果仔细看完题,就是简单的数学题,因为每一次操作之间互不影响,所以先把所有数求和,然后根据l与r的关系,判断奇偶性,然后对总和相加减即可
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int q = sc.nextInt();
long count = 0L;
for (int i = 0; i < n; i++) {
count += sc.nextInt();
}
for (int i = 0; i < q; i++) {
int l = sc.nextInt();
int r = sc.nextInt();
int flag = r - l + 1;
if (flag % 2 == 0) {
count-=(r-l+1)/2;
}else{
count+= r-(r-l+1)/2;
}
}
System.out.println(count);
}
}
第四题
因为咖啡有无限杯,而且可以按照任意毫升比例调制,所以只需要判断所有咖啡比例中最大浓度和最低浓度与目标浓度的关系即可
// 1:无需package
// 2: 类名必须Main, 不可修改
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for (int i = 0; i < t; i++) {
int n = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n];
for (int j = 0; j < n; j++) {
arr[j] = sc.nextInt();
}
Arrays.sort(arr);
if (arr[0] > m) {
System.out.println("NO");
} else if (arr[n - 1] < m) {
System.out.println("NO");
} else {
System.out.println("YES");
}
}
}
}
第五题:
经典流水线问题,使用Johnson算法,参考这篇文章
Johnson算法 流水线问题 java实现-CSDN博客
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] A = new int[n];
for (int i = 0; i < n; i++) {
A[i] = sc.nextInt();
}
int[] B = new int[n];
for (int i = 0; i < n; i++) {
B[i] = sc.nextInt();
}
List<int[]> list1 = new ArrayList<>();
List<int[]> list2 = new ArrayList<>();
for (int i = 0; i < n; i++) {
if (A[i] <= B[i]) {
list1.add(new int[]{A[i], B[i]});
} else {
list2.add(new int[]{A[i], B[i]});
}
}
list1.sort((o1, o2) -> o1[0] - o2[0]);
list2.sort((o1, o2) -> o2[1] - o1[1]);
List<int[]> list = new ArrayList<>();
list.addAll(list1);
list.addAll(list2);
int AA = 0;
int BB = 0;
for(int[] arrs : list){
AA+=arrs[0];
BB = Math.max(AA,BB) + arrs[1];
}
System.out.println(Math.max(AA,BB));
}
}
第六题,找规律
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = (sc.nextLong() + "").length()+1;
System.out.println(n*9);
}
}