CSP 202109-2 非零段划分

题目链接:

计算机软件能力认证考试系统icon-default.png?t=M276http://118.190.20.162/view.page?gpid=T130

【分析】其实这道题是一个差分+前缀和的问题,我们可以这么想,每当出现一个数比前一个数大时,例如数组为[2, 4]时,说明在这个区间内可以产生一次划分,然后对于[5, 8]又可以产生一个划分,相当于对原数组[0, 1, 2, 3, 4, 5, 6, 7, 8]中的区间[2, 4], [5, 8] + 1,最后算一下前缀和,也就是能产生交集的数量就是通过这个数能够产生的划分了。

先贴一个暴力能拿70分再说

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] arr = new int[n];
        int i, ans = 0;
        HashSet<Integer> set =new HashSet<>();
        int start = 100001, end = -1;
        for(i = 0; i < n; i++){
            arr[i] = scanner.nextInt();
            set.add(arr[i]);
            set.add(arr[i]);
        }
        int pre = 0;
        int j, a, max;
        for(Integer it: set){
            if(it == 0) continue;
            max = 0;
            pre = 0;
            for(i = 0; i < n; i++){
                if(arr[i] < it && pre == 1) {
                    max++;
                    pre = 0;
                }else if(arr[i] >= it){
                    pre = 1;
                }
            }
            if(pre == 1) max++;
            ans = Math.max(ans, max);
        }
        System.out.println(ans);
    }

}

 差分+前缀和

 

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[] cnt = new int[10002];
        int[] arr = new int[500002];
        int i;
        for(i = 1; i <= n; i++){
            arr[i] = scanner.nextInt();
            if(arr[i] > arr[i - 1]){
                cnt[arr[i - 1] + 1]++;
                cnt[arr[i] + 1]--;
            }
        }
        int ans = cnt[0];
        for(i = 1; i < 10002; i++){
            cnt[i] += cnt[i - 1];
            ans = Math.max(ans, cnt[i]);
        }
        System.out.println(ans);
    }

}

内容概要:该题库专为研究生入学考试计算机组成原理科目设计,涵盖名校考研真题、经典教材课后习题、章节题库和模拟试题四大核心模块。名校考研真题精选多所知名高校的计算机组成原理科目及计算机联考真题,并提供详尽解析,帮助考生把握考研命题趋势与难度。经典教材课后习题包括白中英《计算机组成原理》(第5版)和唐朔飞《计算机组成原理》(第2版)的全部课后习题解答,这两部教材被众多名校列为考研指定参考书目。章节题库精选代表性考题,注重基础知识与重难点内容,帮助考生全面掌握考试大纲要求的知识点。模拟试题依据历年考研真题命题规律和热门考点,精心编制两套全真模拟试题,并附标准答案,帮助考生检验学习成果,评估应试能力。 适用人群:计划参加研究生入学考试并报考计算机组成原理科目的考生,尤其是需要系统复习和强化训练的学生。 使用场景及目标:①通过研读名校考研真题,考生可以准确把握考研命题趋势与难度,有效评估复习成效;②通过经典教材课后习题的练习,考生可以巩固基础知识,掌握解题技巧;③通过章节题库的系统练习,考生可以全面掌握考试大纲要求的各个知识点,为备考打下坚实基础;④通过模拟试题的测试,考生可以检验学习成果,评估应试能力,为正式考试做好充分准备。 其他说明:该题库不仅提供详细的题目解析,还涵盖了计算机组成原理的各个方面,包括计算机系统概述、数据表示与运算、存储器分层、指令系统、中央处理器、总线系统和输入输出系统等。考生在使用过程中应结合理论学习与实践操作,注重理解与应用,以提高应试能力和专业知识水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值