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]);
       }
    }
}


#360笔试#
全部评论

相关推荐

努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务