9月9日 360笔试
第一题送水:双dp 100%
import java.util.Scanner; public class Main1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; for(int i = 0;i< n;i++){ nums[i] = sc.nextInt(); } int[] dp1 = new int[n];//每个位置相邻左边比他小的个数 int[] dp2 = new int[n];//每个位置右边比他小个数 dp1[0] = 0; dp2[n-1] = 0; for(int i = 1;i< n;i++){ if(nums[i] > nums[i-1]){ dp1[i] = dp1[i -1]+1; } } for(int i = n -2;i >= 0;i--){ if(nums[i] >nums[i + 1]){ dp2[i] = dp2[i+1] +1; } } int res = 0; for(int i = 0;i< n;i++){ res = Math.max(dp1[i] +dp2[i] +1,res); } System.out.println(res); } } 第二题暴力:l忘了++死循环,当时没时间debug了 #泪目import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int q = sc.nextInt(); int[][] nums = new int[q][2]; //操作数 for(int i = 0;i < q; i++){ for(int j = 0;j< 2;j++){ int a = sc.nextInt(); nums[i][j] = a - 1; } } sc.close(); boolean[] chase = new boolean[n];//false为黑 int[] res = new int[q];//结果 for(int i = 0;i < q;i++){ int l = nums[i][0]; int r = nums[i][1]; while(l<=r){ chase[l] = chase[l] == false ? true :false; l++;// } int a = 0; for(int j = 0;j< n;j++){ if(!chase[j]){ a++; } } res[i] = a; } for(int i = 0;i< q;i++){ System.out.println(res[i]); } } }