CSDN 编程竞赛三十九期题解
竞赛总览
CSDN 编程竞赛三十九期:比赛详情 (csdn.net)
竞赛题解
题目1、圆小艺
最近小艺酱渐渐变成了一个圆滑的形状球,小艺酱开始变得喜欢上球!小艺酱得到n个同心圆。小艺酱对着n个同心圆进行染色,相邻的圆范围内不能有相同的颜色,相隔一层的圆颜色相同。小艺酱想知道两种颜色中最外层圆的那种颜色总共染了多少面积?
#include <cstdio>
#include <algorithm>int main () {double resu1t = 0;int n;scanf ("%d", &n);double data [n];for (int i = 0; i < n; i++) scanf ("%lf", &data [i]);std::sort (data, data + n);for (int i = n - 1; i > -1; i -= 2) {int i_1 = i - 1;resu1t += 圆周率 * (data [i] * data [i] - data [i_1] * data [i_1]);}return 0;
}
圆的面积为Pi * (r ^ 2),同心圆的面积为Pi * (R ^ 2 - r ^ 2)。其中,R为大圆半径,r为小圆半径。
注意,圆周率需要给到足够的长度,否则计算出的结果精度不够千分位,会卡一部分测试点。
题目2、近视的小张
小张和他的M个朋友来到了一个十分神奇的地方,在这里有N个柱子,每个柱子有两个属性:高度(Height)、位置(Pos)。题目保证同一个位置不会有多个柱子。请你计算出每个小张的朋友能清晰看到的最远一个柱子的位置,如果那个朋友一个柱子都没有清晰看到,请输出-1。
1、当一个柱子b在另一个不比他低的柱子a的后面时(P[b] > P[a] && H[b] <= H[a]),这个柱子会被遮挡住,也就不再能够被清晰地看到。
2、小张和他的朋友们在位置0休息时,发现似乎朋友们能清晰看到的柱子数量并不相同。在他反复思考后,他认为这可能是近视度数导致的,于是他询问了每一个朋友的近视度数A。为了方便计算,我们认为对于每个朋友来说,对每一个柱子,如果有P [i] > A,那么第 i 个柱子无法被清晰地看见。
此题由CSDN用户a23333a提供。
这道题目分为两步求解:
鉴于总是有人恶意抄袭博主文章,并且竞赛时也可能遇到之前出现过的题目,博主会尽量将思路讲解得全面一些,并减少代码含量。
1、第一步,不考虑朋友的近视度数,单独判断柱子是否被遮挡。
2、第二步,单独判断每个朋友观察柱子的具体情况,找出其能够观察到的最远柱子位置。
求解时,需要考虑如下要点:
1、创建一个柱子结构,输入数据之后,将柱子按照位置从近到远的顺序进行排序。
#include <cstdio>
#include <algorithm>struct node {int height;int pos;bool disvisible;
};int cmp (node a, node b) {return a.pos < b.pos;
}int main () {scanf ("%d %d", &m, &n);node data [n];for (int i = 0; i < n; i++) scanf ("%d", &data [i].height);for (int i = 0; i < n; i++) scanf ("%d", &data [i].pos);std::sort (data, data + n, cmp);return 0;
}
2、更新柱子的可视情况,即结构体中的disvisible属性。这项属性的默认值为false,如果柱子不可视,将其置为true。
更新时,需要特别注意题目中对遮挡判定条件的有关描述。
这段描述可以简化为,如果当前柱子在一个柱子的后面,并且高度未超过前面的柱子,那么它就会被遮挡。也可以理解为:前面较高的的柱子,会挡住后面的柱子。特别是,如果刚开始遇到的柱子九非常高,那么它有可能把后面大部分甚至全部的柱子都挡住。
因此,更新可视情况时,需要动态维护最高柱子的高度。默认第一个柱子就是最高的柱子,并且它肯定不会被挡住,只需要从第二个柱子开始更新即可。
更新时,先检查当前正在判断的柱子高度有没有超过之前记录的较高的柱子,如果更高,更新最大高度。这时,当前这个柱子肯定可视,因为它比前面最高的柱子还要高。否则,这个柱子的高度没有超过前面的柱子,那么它会被遮挡!这时,需要将disvisible置为true。
博主在竞赛时特别留意了一下这一步,并且赛后发现很多人这道题目只通过了90%的测试点。其中原因之一,很可能就是这个部分的写法导致的。
更新完成后,将所有可视的柱子加入到一个列表中,以备后续计算使用。
3、使用循环读入每个朋友的近视情况。当遇到新的朋友时,根据其近视情况,判断其能看到的最远柱子位置。
由于柱子已经按位置排好序,因此,上一步计算出来的可视柱子,位置仍然是有序的。这一步可以直接将这部分数据拿来使用。
注意,本题中定义的近视度数满足这样的规律:近视情况越严重,能看到的位置越近,即近视度数数值越小。当柱子位置超过近视度数时,柱子便无法被看到。这与现实中的标准有部分差异,需要充分理解,才能解决这道题目。
柱子的起始位置大于零,意味着,如果近视度数也为零,那么对于这位朋友而言,任何柱子都无法被看到。题目规定如果任何柱子都无法被看到,输出-1。我们可以巧妙地利用哨兵来处理这个情况。上一步已经记录了可视柱子的位置,只需要将-1插入到这个列表的首部即可。
对于每一位朋友,可以默认其能看到的柱子是最远的那个可视柱子(假设有n个可视柱子,那么初始最远下标置为n)。之后,使用循环从前到后扫描每个柱子,判断其能否被看到。注意,由于加入了哨兵,需要跨过其进行扫描,因此起始下标不是零。对于每个柱子,如果其位置大于近视度数,那么更新能看到的最远柱子的下标,并跳出循环。
题目要求输出最远柱子的位置,由于柱子位置列表下标从零开始,我们只需输出记录的最远柱子下标-1的那个数组成员即可。
例如,能看到全部的柱子,位置为 visible [n - 1]。
若只能看到一个柱子,则循环至第二个柱子时就卡到判定条件,并跳出循环,这时输出位置为 visible [2 - 1]。
如果任何柱子也看不到,位置为 visible [1 - 1],即 visible [0] == -1。
题目3、小股炒股
已知n天后的股票行情,现在已有的本金是m,规定只能入手一次股票和抛售一次股票。最大收益是多少(含本金)?
#include <cstdio>int main () {int n, m;scanf ("%d %d", &n, &m);int price [n], award = 0;for (int i = 0; i < n; i++) scanf ("%d", &price [i]);for (int i = 0; i < n; i++) {// calc awardNow;for (int j = i + 1; j < n; j++) {award = max (award, awardNow);}}return 0;
}
计算每一天的收益(卖出收益 - 购入成本),当收益超过历史最大收益时,更新历史收益。
最后,输出本金 + 历史最大收益即可。
题目4、买铅笔
P老师需要去商店买n支铅笔作为小朋友们参加编程比赛的礼物。她发现商店一共有三种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同。为了公平起见,P老师决定只买同一种包装的铅笔。商店不允许将铅笔的包装拆开,因此P老师可能需要购买超过n支铅笔才够给小朋友们发礼物。现在P老师想知道,在商店每种包装的数量都足够的情况下,要买够至少n支铅笔最少需要花费多少钱。
#include <cstdio>const int size = 3;int main () {int resu1t = 0;int n;scanf ("%d", &n);int count [size], cost [size], price [size];for (int i = 0; i < size; i++) {scanf ("%d %d", &count [i], &cost [i]);// calc price [i];if (price [i] < price [resu1t]) resu1t = i;}return 0;
}
题目规定只能买一种铅笔,而不能混搭。因此,可以使用循环来计算买每种铅笔花费的价格。
当价格比历史价格更低时,则更新历史最低价格对应的铅笔类型。
完成对所有铅笔种类的计算之后,输出最低价格即可。
相关文章:
CSDN 编程竞赛三十九期题解
竞赛总览 CSDN 编程竞赛三十九期:比赛详情 (csdn.net) 竞赛题解 题目1、圆小艺 最近小艺酱渐渐变成了一个圆滑的形状球,小艺酱开始变得喜欢上球!小艺酱得到n个同心圆。小艺酱对着n个同心圆进行染色,相邻的圆范围内不能有相同的…...
ChatGPT来了你慌了吗?
文章目录一、ChatGPT是什么?一、ChatGPT到底多强大?三、各平台集成了ChatGPT插件:四、ChatGPT能否取代程序员?一、ChatGPT是什么? ChatGPT(全名:Chat Generative Pre-trained Transformer&…...
Dijkstra 算法
Dijkstra 算法( 迪杰斯特拉算法), 又叫最短路径算法, 这是常见的图论中的最短路径算法, 由 Edsger W.Dijkstra 在 1959 年发表。 这种算法能够给定一个图中的源节点( Source Node), …...
EIgamal 算法实现与解读
EIgamal 算法实现与解读 数学知识1.求原根2.求逆元快速幂求解EIgamal 算法1. Elgamal密钥产生2. Elgamal加密3. Elgamal解密效果如下:数学知识 1.求原根 如果g是p的原根,就是g^(p-1) = 1 (mod P)当且仅当指数为p-1的时候成立.(这里P是素数) 简单来说,g^i mod p ≠ g^j m…...
静态通讯录动态通讯录制作详解
🍕在本期的博客我们来向大家介绍一下静态通讯录的书写以及怎样将我们的静态通讯录更改为动态的模式。 🍔静态通讯录的创建 🍕就像是我们之前进行的完整程序逻辑的书写一样我们同样创建三个文件,两个 .c 文件,一个 .h 文…...
2023最新最详细【接口测试总结】
序章 说起接口测试,网上有很多例子,但是当初做为新手的我来说,看了不不知道他们说的什么,觉得接口测试,好高大上。认为学会了接口测试就能屌丝逆袭,走上人生巅峰,迎娶白富美。因此学了点开发…...
【java基础】Stream流的各种操作
文章目录基本介绍流的创建流的各种常见操作forEach方法filter方法map方法peek方法flatMap方法limit和skip方法distinct方法sorted方法收集结果收集为数组(toArray)收集为集合(collect)收集为Map关于流的一些说明(终结操…...
【Python练习】序列结构
目录 一、实验目标 二、实验内容...
CDN加速缓存的定义与作用
一、CDN的含义CDN的全称是Content Delivery Network,即内容分发网络。CDN是在原有互联网的基础上再构建虚拟分发网络,利用部署在各地的边缘节点服务器,充分发挥其负载均衡、内容分发智能调度等功能,让用户能够就地拉取数据&#x…...
Java并发高频面试题
分享50道Java并发高频面试题。 线程池 线程池:一个管理线程的池子。 为什么平时都是使用线程池创建线程,直接new一个线程不好吗? 嗯,手动创建线程有两个缺点 不受控风险频繁创建开销大 为什么不受控? 系统资源有…...
CVPR 2023 | 旷视研究院入选论文亮点解读
近日,CVPR 2023 论文接收结果出炉。近年来,CVPR 的投稿数量持续增加,今年收到有效投稿 9155 篇,和 CVPR 2022 相比增加 12%,创历史新高。最终,大会收录论文 2360 篇,接收率为 25.78 %。本次&…...
Vue3 学习总结补充(一)
文章目录1、Vue3中为什么修改变量的值后,视图不更新?2、使用 ref 还是 reactive?3、reactive 为什么会有响应性连接丢失情况?4、watch的不同使用方法5、watchEffect和 watch 的区别区别1:数据源的区别区别2:…...
使用ChatGPT 开放的 API 接口可以开发哪些自研工具?
使用ChatGPT开放的API接口,可以开发多种自研工具,例如: 智能聊天机器人:可以使用ChatGPT提供的语言生成能力,构建一个智能聊天机器人,能够根据用户的输入自动回复,完成自然语言交互。 文本生成工具:可以使用ChatGPT的文本生成能力,开发一个文本生成工具,例如自动生…...
I2C和SPI总线以及通信
通讯属性 概括 Serial/parallel 串行/并行Synchronous/asynchronous 同步/异步Point-to-point / bus 点对点 总线Half-duplex/full-duplex 半双工/全双工Master-slave/ equal partners 主从/对等single-ending / differential 单端/差分 点对点和总线 点对点通讯 只有两个通…...
Spring八股文
Bean的生命周期 1.通过反射生成对象 2.填充Bean的属性 3.调用aware接口的invokeAwareMethod方法,对BeanName、BeanFactory、BeanClassLoader对象的属性设值 4.调用BeanPostProcessor的前置处理方法,其中使用较多的是ApplicationContextPostProcessor…...
20 k8sMetric 简介
一. Metric 简介metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部分监控指标,Pod 的监控指标用于 HPA、VPA 与 kubectl top pods -n ns 命令,而 Node…...
面试问了解Linux内存管理吗?10张图给你安排的明明白白
linux内存管理,内存管理好像离我们很远,但这个知识点虽然冷门(估计很多人学完根本就没机会用上)但绝对是基础中的基础,这就像武侠中的内功修炼,学完之后看不到立竿见影的效果,但对你日后的开发工…...
【C++】内联函数inline
文章目录概念使用特性原理概念 C中内联函数的出现解决了C语言宏函数的不足,类似于宏展开,这种在函数调用处直接嵌入函数体的函数称为内联函数,又称内嵌函数或内置函数。 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内…...
C++演讲比赛流程管理系统_黑马
任务 学校演讲比赛,12人,两轮,第一轮淘汰赛,第二轮决赛 选手编号 [ 10001 - 10012 ] 分组比赛 每组6人 10个评委 去除最高分 最低分,求平均分 为该轮成绩 每组淘汰后三名,前三名晋级决赛 决赛 前三名胜出 …...
谈谈低代码的安全问题,一文全给你解决喽
低代码是一种软件开发方法,通过使用图形化用户界面和可视化建模工具,以及自动生成代码的技术,使得开发人员可以更快速地构建和发布应用程序。 作为近些年软件开发市场热门之一,市面上也涌现了许多低代码产品,诸如简道云…...
深入解析SAR ADC:从二分搜索原理到高精度数据采集实战
1. 项目概述:从“猜数字”游戏理解SAR ADC在模拟信号处理的世界里,我们常常需要将现实世界中连续变化的物理量(比如温度、声音、压力)转换成计算机能够理解和处理的数字信号。这个关键的桥梁,就是模数转换器。而在众多…...
AI Agent开发工具大爆发:Claude、OpenAI、Google三强争霸
一、开篇:一夜之间,AI Agent开发工具"卷"起来了 说实话,作为一个每天泡在代码里的开发者,我原以为AI代码助手的发展速度已经够快了。但看了过去24小时的AI圈动态,我直呼"好家伙"——Claude Code、…...
Python(循环中断)
目录 1.break---终止整个循环 1.1 基本概念 1.2 基本用法示例 1.3 典型应用场景 1.4 break 与 else 的经典搭配 2. continue —— 跳过本次迭代 2.1 基本概念 2.2 基本用法示例 2.3 典型应用场景 2.4 continue与 else 3. break vs continue —— 对比总结 4. pass …...
JMeter+DeepSeek实现性能测试报告自动化与智能脚本生成
1. 这不是“AI写报告”,而是把性能测试工程师从重复劳动里解放出来的实操路径 你有没有过这样的经历:凌晨两点还在手动整理JMeter的.jtl结果文件,Excel里堆着几十列响应时间、错误率、吞吐量,再复制粘贴到Word里写“本次压测在200…...
SaaS系统数据范围权限设计:从RBAC/ABAC到高性能实现
1. 项目概述:当数据安全遇上规模化增长在构建和运营一个面向多租户的大型SaaS(软件即服务)系统时,数据安全与隔离是悬在每一位架构师和开发者头上的“达摩克利斯之剑”。这不仅仅是技术问题,更是商业信任的基石。想象一…...
网络设备27MHz差分时钟选型与设计实战:从HCSL接口到低抖动布局
1. 项目概述:为什么网络设备的“心跳”如此挑剔?干了十几年硬件设计,从早期的百兆交换机做到现在的万兆、25G甚至更高速率的设备,我越来越深刻地体会到,一个稳定、干净的时钟信号,对于网络设备而言…...
从NPN到FET:一文看懂LDO内部调整管的演进史,以及如何根据你的项目(IoT、可穿戴、汽车电子)选择最优架构
从NPN到FET:LDO调整管技术演进与选型实战指南 在可穿戴设备的心率传感器突然断电的瞬间,工程师们才意识到选错LDO的代价——这恰恰揭示了调整管架构对系统可靠性的决定性影响。从早期笨重的NPN稳压器到如今纳米级MOSFET LDO,电源管理芯片的进…...
2026这6款宝藏降AIGC软件大起底,一键把AIGC率降至安全线!
步入 2026 年,学术圈的风向早已不是过去那个只看查重率的时代了。如今,AI 检测系统像长了眼睛一样,精准捕捉每一段文字中的 AI 痕迹。高校的审核标准也愈发严苛,论文不仅要“看起来像人写的”,更要“读起来像人写的”。…...
初创团队如何利用Taotoken以最小成本试用多款大模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 初创团队如何利用Taotoken以最小成本试用多款大模型 对于初创团队和独立开发者而言,在技术选型与原型验证阶段…...
猫抓(Cat-Catch):3分钟掌握浏览器资源嗅探的终极解决方案
猫抓(Cat-Catch):3分钟掌握浏览器资源嗅探的终极解决方案 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存在线视频而烦恼…...
