CCF CSP认证历年题目自练Day28

news2025/1/14 1:10:16

题目一

试题编号: 202109-1
试题名称: 数组推导
时间限制: 1.0s
内存限制: 512.0MB
请添加图片描述
样例1输入
6
0 0 5 5 10 10

样例1输出
30
15
请添加图片描述
样例2输入
7
10 20 30 40 50 60 75

样例2输出
285
285
请添加图片描述

题目分析(个人理解)

  1. 我是这样理解的,第一行输入n个整数,第二行输入n个整数,这些整数单调不减,然后求这些整数的和就是求题目中sum的最大值,sum的最小值就是n个整数去重之后的和。(不理解我为啥这样写可以再多读题目自己理解)
  2. 那真的很简单,我还是选择列表num存储,然后求和就是sum的最大值,去重之后求和就是sum的最小值,那么对于此题的去重我有两种方法,第一种对元素进行两两判断,如果不等就追加写入新列表,我在num[0]位插入0,然后
    for i in range(n):
    if num[i]!=num[i+1]:
    l.append(num[i+1])
    为什么要在num[0]填0,是因为原num的num[0]!=num[1]我追加写入的只有num[1]那么求和的时候会漏掉num[0]。
  3. 第二种方法是判断列表num中不相同的元素,然后将不相同的写入新的列表,然后对新列表求和即是sum的最小值
  4. 上代码!!!
#方法一
n=int(input())
l=[]
num=list(map(int,input().split()))
num.insert(0,0)
for i in range(n):
    if num[i]!=num[i+1]:
        l.append(num[i+1])
print(sum(num))
print(sum(l))
#方法二
n=int(input())
l=[]
num=list(map(int,input().split()))
for i in num:
    if i not in l:
        l.append(i)
print(sum(num))
print(sum(l))

题目二

试题编号: 202109-2
试题名称: 非零段划分
时间限制: 1.0s
内存限制: 512.0MB
请添加图片描述
样例1输入
11
3 1 2 0 0 2 0 4 5 0 2

样例1输出
5

请添加图片描述
请添加图片描述
请添加图片描述

题目分析(个人理解)

  1. 我们可以将想像成一个海岛问题,每一个超过海平面的小山顶就是一个非零段,p理解为海平面,现在就要求什么时候超过海平面的小山顶最多。
  2. 现在设海面为0,岛屿为非零段,输入数组nums中的值代表当前下标位置的海拔高度。海平面从max(L)下降至1(海平面高度记为level),在海平面下降过程中,i处多了一个岛屿(非零段)当且仅当此时海平面高度<=i处海拔高度且[i-1],[i+1]处都为水(海拔小于海平面),i处减少了一个岛屿当且仅当此时海平面高度<=i处海拔高度且[i-1],[i+1]处都已经为岛屿。记数组island代表每个位置的目前状况(水或陆地),即island[i]=0当且仅当nums[i]<level,island[i]=1当前仅当nums[i]>=level。
  3. 将第二行输入的列表A[] 元素前后加0,表示都在海里,我选择用枚举函数enumerate()对列表,也就是岛屿的山顶标号,如果A的元素等于0就说明是海,不用记录,for id, num in enumerate(A):
#以下展示了使用 enumerate() 方法的实例:

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

#for 循环使用 enumerate
>>> seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, element
...
0 one
1 two
2 three
  1. 我将每一个山顶的序号放入字典idx_dic{}的values里,将每一个山顶的高度放到keys里,字典的值是列表形式。
  2. 上代码!!!
n = int(input())
# 数组前后补零
A = [0]+list(map(int, input().split()))+[0]
idx_dic = {}
maxnum = 0
for id, num in enumerate(A):
    # num是0不用记录
    if not num:
        continue
    maxnum = max(maxnum, num)
    if idx_dic.get(num) is None:
        idx_dic[num] = [id]
    else:
        idx_dic[num].append(id)
 
cnt, ans = 0, 0
island = [0]*(n+2)
for level in range(maxnum, 0, -1):
    if idx_dic.get(level) is None:
        continue
    for idx in idx_dic[level]:
        # 如果前后是陆地
        if island[idx-1] and island[idx+1]:
            cnt -= 1
        # 如果前后是水
        elif not island[idx-1] and not island[idx+1]:
            cnt += 1
        island[idx] = 1
    ans = max(ans, cnt)
print(ans)

总结

饭吃多了跑不动。
请添加图片描述
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1081724.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yml显示不了小树叶图标解决办法

问题描述 在项目中&#xff0c;idea新建yml文件不显示小绿叶图标 1、解决办法一 找到下图设置&#xff1a;file -> settings -> Plugins 查看spring boot插件是非已安装&#xff08;按照下图步骤查看&#xff09; 2、解决办法二 ctrlalts&#xff0c;去File Types查…

记一次使用vue-markdown在vue中解析markdown格式文件,并自动生成目录大纲

先上效果图 如图所示&#xff0c;在网页中&#xff0c;能直接解析markdown文档&#xff0c;并且生成目录大纲&#xff0c;也支持点击目录标题跳转到对应栏目中&#xff0c;下面就来讲讲是如何实现此功能的。 1、下载vue-markdown yarn add vue-markdown 2、在页面中渲染markdo…

MySQL数据生成工具mysql_random_data_load

在看MySQL文章的时候偶然发现生成数据的工具&#xff0c;此处直接将软件作者的文档贴了过来&#xff0c;说明了使用方式及下载地址 Random data generator for MySQL Many times in my job I need to generate random data for a specific table in order to reproduce an is…

2023.10 秋爽版 java 软件授权激活 架构 java代码混淆 按日期授权 不联网

什么是代码混淆&#xff1f; 代码混淆是一种技术&#xff0c;用于在不改变代码功能的情况下&#xff0c;通过改变代码的结构和逻辑&#xff0c;使之变得更难理解和分析&#xff0c;从而增加反向工程的难度。 为什么要进行代码混淆&#xff1f; 在Java应用程序中&#xff0c;…

MyBatisPlus(十七)通用枚举

说明 MyBatisPlus 优雅地使用枚举类型。 声明通用枚举属性 使用 EnumValue 注解枚举属性 package com.example.web.enumeration;import com.baomidou.mybatisplus.annotation.EnumValue; import com.fasterxml.jackson.annotation.JsonValue; import lombok.AllArgsConstru…

安装Android SDK点击SDK Manager.exe一闪而退完美解决方案

如上图&#xff0c;我们点击 “SDK Manager.exe” 总是一闪而退。 1.查看提示说Detect whether Java SE Development Kit is installed&#xff0c;检查你的JDK是否安装。 2.在cmd里看了&#xff0c;java -version 和javac -version都是有显示版本的。说明安装以及环境配置成…

ES6介绍

1&#xff1a;ES6声明变量 1.变量var声明变量的问题 ES5 可以重复声明变量可以先使用再声明造成全局变量污染 2.let声明变量特点 ES6 不能先使用再说明不能重复定义一个变量具有块级作用域 3.const声明变量特点 ES6 不能先使用再说明一旦声明必须赋值赋值之后不能修改具有块级…

0144 文件管理

目录 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 4.文件管理 4.1文件系统基础 4.2目录 4.3文件系统 部分习题 1.UNIX操作系统忠&#xff0c;输入/输出设备视为&#xff08;&#xff09; A.普通文件 B.目录文件 C.索引文件 D.特殊文…

cesium 地图蒙版遮罩效果

示例代码 <!DOCTYPE html> <html lang"en"><head><!-- Use correct character set. --><meta charset"utf-8" /><!-- Tell IE to use the latest, best version. --><meta http-equiv"X-UA-Compatible"…

快速排序 ← PPT

【算法代码】https://blog.csdn.net/hnjzsyjyj/article/details/127825125

JavaScript (下)

1.面向对象 在 Java 中我们学习过面向对象&#xff0c;核心思想是万物皆对象。在 JavaScript 中同样也有面向对象。思想类似。 把相关的数据和方法组织为一个整体来看待&#xff0c;从更高的层次来进行系统建模&#xff0c;更贴近事物的自然运行模式 1.类的定义和使用 格式…

Java二叉树超详解(常用方法介绍)(2)

二叉树中的常用方法 静态二叉树的手动创建 这里我们先给出二叉树结点的信息(这里是内部类)&#xff1a; static class TreeNode {public char val;public TreeNode left;//左孩子的引用public TreeNode right;//右孩子的引用public TreeNode(char val) {this.val val;}} 手动…

嵌入式系统开发【深入浅出】 UART 与 USART

目录 UART: 通用串行异步收发器 串行通信的时序 8N1&#xff1a;8位数据位 N没有校验位 1停止位1位 中断控制 编程重点 引言&#xff1a; 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式&#xff0c;并且大部分电子设备都支持该通讯方式&#xff0c;也…

TensorFlow入门(二十一、softmax算法与损失函数)

在实际使用softmax计算loss时,有一些关键地方与具体用法需要注意: 交叉熵是十分常用的,且在TensorFlow中被封装成了多个版本。多版本中,有的公式里直接带了交叉熵,有的需要自己单独手写公式求出。如果区分不清楚,在构建模型时,一旦出现问题将很难分析是模型的问题还是交叉熵的使…

【 数据结构:堆(Heap)】大根堆、小根堆、堆的向上调整算法、向下调整算法 及 堆的功能实现!

前言 本系列文章【数据结构】默认会使用 C/C 进行设计实现&#xff01;其他语言的实现方式请参照分析设计思路自行实现&#xff01; 注[1]&#xff1a;文章属于学习总结&#xff0c;相对于课本教材而言&#xff0c;不具有相应顺序性&#xff01;&#xff08;可在合集中自行查看…

C++: 继承

学习目标 1.继承的概念及定义 2.基类和派生类对象赋值转换(切片) 3.继承中的作用域(隐藏/重定义) 4.派生类的默认成员函数 5.继承与友元 6.继承与静态成员 7.菱形继承与菱形虚拟继承 8.总结 1.继承的概念及定义 1.1概念 继承: 它允许你创建一个新的类&#xff08;称为子类或派…

小程序uView2.X框架upload组件上传方法总结+避坑

呈现效果: 1.1单图片上传 1.2多图片上传 前言:相信很多人写小程序会用到uView框架,总体感觉还算OK吧,只能这么说,肯定也会遇到图片视频上传,如果用到这个upload组件相信你,肯定遇到各种各样的问题,这是我个人总结的单图片和多图片上传方法. uView2.X框架:uView 2.0 - 全面兼容…

JavaSE学习值之--String类

&#x1f495;"不要同情自己&#xff0c;同情自己是卑劣懦夫的勾当&#xff01;"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;JavaSE学习值之--String类 目录 前言&#xff1a; 一.String类 1.String类的属性 2.字符串的构造 注意&#xf…

基于YOLOv8模型的塑料瓶目标检测系统(PyTorch+Pyside6+YOLOv8模型)

摘要&#xff1a;基于YOLOv8模型的塑料瓶目标检测系统可用于日常生活中检测与定位塑料瓶目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的目标检测&#xff0c;另外本系统还支持图片、视频等格式的结果可视化与结果导出。本系统采用YOLOv8目标检测算法训练数…

翻译docker官方文档(残缺版)

Build with docker(使用 Docker 技术构建应用程序或系统镜像) Overview (概述) 介绍&#xff08;instruction&#xff09; 层次结构&#xff08;Layers&#xff09; The order of Dockerfile instructions matters. A Docker build consists of a series of ordered build ins…