ACM实训冲刺第二十一天

寒冰王座(数据处理与逻辑判断)

这段C语言代码实现了一个根据特定条件计算整数输入值变换的程序,它并不直接对应于经典的算法题类型,但可以视为一个“数据处理与逻辑判断”练习题。代码的主要逻辑如下:

  1. 读取测试数据数量 (T):首先读取一个整数T,表示有多少组测试数据。如果T不在1到100的范围内,则结束输入。

  2. 循环处理每组测试数据:对于每组数据,执行以下操作:

    • 初始化变量sum为0。
    • 读取一个正整数n,如果n不在1到10000的范围内,结束当前循环。
    • 根据n的值应用不同的计算规则:
      • 如果n >= 300,则sum = n % 50(取模运算)。
      • 如果150 <= n < 200,则sum = n - 150
      • 如果200 <= n < 300,则sum = n - 200
      • 如果n < 150,则sum = n
    • 输出计算结果sum
  3. 错误的边界检查位置:代码中有一处逻辑错误,在外层循环结束后再次检查了n的范围,但这实际上在循环结束后已经失去了意义,因为此时n的值未被重新定义,且这一检查并不能终止程序或改变程序流程,应视为冗余或错误代码。

#include <stdio.h> 
int main(){int T,i,n,sum;while(scanf("%d",&T)!=EOF){ //T代表的是测试数据的数量 if(T<1||T>100) break;for(i=0;i<T;i++){int sum=0;//初始化置0scanf("%d",&n) ;//正整数Nif(n<1||n>10000) break;if(n>=300) sum=n%50;else if(n<200&&n>=150) sum=n-150;else if(n<300&&n>=200) sum=n-200;else if(n<150) sum=n;printf("%d\n",sum);}}return 0;
}

Charm Bracelet(0-1背包问题

这段代码实现的是一个经典的动态规划问题——0-1背包问题。0-1背包问题是一种组合优化问题,问题描述为:给定一组物品,每种物品都有自己的重量W和价值V,以及一个背包所能承载的最大重量M,要求在不超过背包最大重量的前提下,挑选物品装入背包,使得背包中物品的总价值最大。

代码解析如下:

  1. 输入: 首先读取两个整数nm,分别代表物品的总数和背包的最大容量。
  2. 初始化: 定义一个数组dp,长度为12881(这里的长度选择是基于题目的实际情况,确保能覆盖到背包最大容量的情况),并初始化所有dp[i]为0。dp[i]表示当背包容量为i时,能够装入物品的最大价值。
  3. 动态规划转移: 遍历每一件物品(编号为1到n),对于每件物品,读取其重量w和价值d,然后从当前背包容量m反向遍历到这件物品的重量w,更新dp[j]的值。如果将当前物品装入背包(即考虑之前容量为j-w的情况,并加上当前物品的价值d)能得到更大的价值,就更新dp[j]的值为这个更大的价值。这是动态规划中典型的“状态转移”过程。
  4. 输出结果: 最终,dp[m]存储的就是在背包容量为m时能装入物品的最大总价值,将其输出即为答案。
#include<stdio.h> 
int main() {int n,m;scanf("%d %d",&n,&m);int dp[12881];for(int i=0;i<m;i++){dp[i]=0;}for(int i=0;i<n;i++){int d,w;scanf("%d %d",&w,&d);for(int j=m;j>=w;j--){//注意条件 if(dp[j-w]+d>dp[j]){dp[j]=dp[j-w]+d;}}}printf("%d\n",dp[m]);return 0;
}

Vanya and Lanterns(最大覆盖半径)

实现的算法主要是基于排序和扫描的方式来解决一个具体问题,即找出能够使得所有路段上的点都被路灯覆盖所需的最小最大半径。具体步骤如下:

  1. 输入读取:首先读取路灯数量(n)和路的总长度(l),然后读取每个路灯所在的位置。

  2. 排序:使用std::sort函数对路灯位置数组进行排序,这样可以确保位置按升序排列,便于后续处理。

  3. 最大间距计算:通过遍历排序后的路灯位置数组,计算相邻路灯之间的距离并取其中的最大值的一半作为可能的最大覆盖半径的一个候选值。这是因为任何位置上的点到相邻两个路灯的最远距离不会超过这两个路灯间距的一半。

  4. 处理边界情况:检查第一个和最后一个路灯位置与路的两端点的关系,以确定是否存在路的两端没有直接被路灯覆盖的情况。如果路的开始位置或结束位置没有路灯,则需要将这些未覆盖的路段长度与之前计算的最大间距的一半比较,取其中的最大值作为实际的最大覆盖半径。

  5. 输出结果:最后输出计算得到的最大覆盖半径,保留10位小数。

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<algorithm>
using namespace std;
double ans=0;
int n;
int l; 
double loc[1001]; 
int main(){scanf("%d %d",&n,&l);for(int i=0;i<n;i++)scanf("%lf",&loc[i]);sort(loc,loc+n) ;for(int i=0;i<n;i++)ans=max(ans,(loc[i]-loc[i-1])/2.0) ;if(loc[0]!=0)ans=max(ans,loc[0]) ;if(loc[n-1]!=l)ans=max(ans,l-loc[n-1]) ;printf("%.010lf\n",ans);return 0;
}

Anton and Danik(数值运算与字符串处理)

这段代码运用的是计数/统计算法思路来解决问题。具体步骤如下:

  1. 输入处理:首先,程序读取一个整数n,表示字符串s的长度。随后,读取一个长度为n的字符串s,该字符串只包含字符'A'和'D'。

  2. 统计字符:通过遍历字符串s,使用两个计数器cntAcntD分别记录字符'A'和'D'出现的次数。这是通过一个简单的循环实现的,每次遇到字符'A'就增加cntA的值,遇到'D'就增加cntD的值。

  3. 结果判断:遍历结束后,根据cntAcntD的值来判断并输出结果:

    • 如果cntA大于cntD,则输出"Anton",表示字符'A'(代表Anton)出现次数更多。
    • 如果cntD大于cntA,则输出"Danik",表示字符'D'(代表Danik)出现次数更多。
    • 代码中存在一处逻辑错误,应使用==而非=, 正确的判断条件应该是else if(cntA == cntD),此时输出"Friendship",表示两者出现次数相等,象征友谊。
#include<stdio.h>
#include<string.h>
#define MAX_N 100000
int main() {int n;scanf("%d",&n);char s[MAX_N];scanf("%s",s);int cntA=0,cntD=0;for(int i=0;i<n;i++){if(s[i]=='A')cntA++;else if(s[i]=='D')cntD++;}if(cntA>cntD)printf("Anton\n");		else if(cntD>cntA)printf("Danik\n");		else if(cntA=cntD)printf("Friendship\n");return 0;
}

题型统计

练习题名称数学计算与序列求和数值运算与字符串处理频率统计题数据处理与逻辑判断0-1背包问题最大覆盖半径
SUM Problem
A+B problem
Anton and letters
Sum of digits
寒冰王座
Charm Bracelet
Vanya and Lanterns
Anton and Danik

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

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

相关文章

electron-builder 打包配置

electron-builder介绍 一个完整的解决方案&#xff0c;用于打包和构建适用于macOS、Windows和Linux的可供分发的Electron应用程序&#xff0c;并提供开箱即用的“自动更新”支持。 命令 Commands: electron-builder build 构建 …

数据库设计分为几个阶段?

数据库设计可以分为以下几个阶段&#xff1a; 1.需求分析阶段&#xff1a;确定数据库的目标和需求&#xff0c;包括确定数据库的功能、数据量、访问模式、安全性等。 2.概念设计阶段&#xff1a;根据需求分析&#xff0c;设计出数据库的概念模型&#xff0c;包括实体、关系、…

Java学习52-迭代器 iterator

迭代器 iterator 迭代器Iterator的作用&#xff1f; 集合Collection是一个容器&#xff0c;是用来存储数据的。Iterator不是容器&#xff0c;是用来遍历现存的集合中的数据的。 2.如何选取迭代器Iterator对象&#xff1f; Iterator iterator coll.iterator(); 3.如何实现遍…

Hono 框架使用经验谈

Hono&#x1f525;是一个小型、快速并开源的 Serverless Web 框架&#xff0c;用 TypeScript 写就。它适用于任何JavaScript运行时&#xff1a;Cloudflare Workers&#xff0c;Fastly ComputeEdge&#xff0c;Deno&#xff0c;Bun&#xff0c;Vercel&#xff0c;Netlify&#x…

动手学操作系统(一、搭建实验环境)

动手学操作系统&#xff08;一、搭建实验环境&#xff09; 文章目录 动手学操作系统&#xff08;一、搭建实验环境&#xff09;1. 在VMware虚拟机中安装ubuntu20.042. 安装Bochs3. 启动计算机Reference &#x1f680; 环境配置 &#x1f680; 笔者的环境使用的是 ubuntu 20.04…

python多线程的使用

Python 多线程探索 在 Python 编程中&#xff0c;多线程是一项强大的技术&#xff0c;它允许我们同时执行多个任务&#xff0c;从而提高程序的效率和响应性。 一、线程的基本概念 线程是进程中的一个执行单元&#xff0c;可以与其他线程共享进程的资源。 二、创建线程 在 P…

HTML/JavaScript实现复制文本、复制HTML、复制图片功能

文章目录 复制文本复制HTML复制图片全代码 复制文本 navigator.clipboard.writeText 接收一个字符串参数&#xff0c;写入到剪贴板中。 <button onclick"copyText()">复制文本</button> <script> function copyText() {// navigator.clipboard.wri…

Linux:confluence8.5.9的部署(下载+安装+破ji)离线部署全流程

0.环境 Confluence也是比较吃运存了&#xff0c;我建议运行运存给到4g或者4g以上就可以了&#xff0c;核数可以给到1核或以上 我部署在centos7.9操作系统上&#xff0c;ip地址为&#xff1a;192.168.6.1&#xff0c;yum仓库使用的是自己的镜像文件&#xff0c;本章所有使用到…

爱普生XC1011SD为电气稳定控制系统组合式传感器推出解决方案

在现代电力系统中&#xff0c;确保系统的安全和稳定运行至关重要。为了应对这一需求&#xff0c;我们推出了XC1011SD组合式传感器解决方案&#xff0c;它专为电气稳定控制系统设计&#xff0c;提供了卓越的性能和可靠性。 XC1011SD是一款集成陀螺仪传感器和双轴加速度计于一体的…

炸裂!AI五分钟模仿爆款IP故事,涨粉速度太绝了!

‍ ‍大家好&#xff0c;我是向阳。 今天我要分享一个利用AI技术模仿爆款账号的小技巧&#xff0c;帮助大家迅速增加粉丝。这个方法简单实用&#xff0c;尤其适用于副业和本地生活领域。接下来&#xff0c;我将为大家详细讲解操作步骤。让我们开始吧。 副业赚钱&#xff1a;模…

合约构成-成员变量、函数、事件event、修饰器modifier及构造函数

合约的基本结构 合约中的成员变量合约中的成员函数Event&#xff08;事件&#xff09;、modifier(修饰器)与constructor&#xff08;构造函数:实例产生的时候执行&#xff09; Event事件 modifier construcor 1、成员变量 概念&#xff1a;存储合约状态的变量 声明方法&a…

北京证券公司港股通交易佣金手续费最低是多少?万0.8?港股通纳入规则是怎么样的?

港股通交易佣金概述 港股通的交易佣金可能会因证券公司和投资者的不同而有所差异。 北京证券公司的港股通交易佣金最低可能万分之零点八&#xff08;0.008%&#xff09;&#xff0c;但这需要投资者与证券公司客户经理了解&#xff0c;进行沟通和申请。 一般来说&#xff0c;…

git-将老项目的分支推送到新项目的新分支上

1.克隆新项目&#xff1a;首先&#xff0c;将新项目的仓库克隆到本地。使用以下命令将新项目克隆到本地&#xff1a; git clone <新项目的仓库地址> 2.进入新项目目录&#xff1a;进入新项目的目录&#xff0c;使用以下命令&#xff1a; cd <新项目目录> 3.添加旧项…

CSS学习笔记:Less

什么是Less&#xff1f; Less是一个CSS预处理器&#xff0c; Less文件后缀是.less 扩充了CSS 语言&#xff0c;使CSS具备一定的逻辑性、计算能力 可以通俗地理解&#xff1a;Less是一种更好用的CSS 注释 运算 嵌套 Less嵌套的作用&#xff1a;快速生成后代选择器 变量 问…

软考中级-软件设计师-真题详解【2023年上半年】

2023上半年真题记忆点详解 本片不涉及解题法&#xff0c;只整理记忆背诵点&#xff0c;记住即可拿分。 上午题部分&#xff1a; 片内总线&#xff1a;用于芯片内部各主要部件连接&#xff1b; 系统总线&#xff1a;用于CPU、主存、外设见的数据传输&#xff1b; 通讯总线&…

嵌入式LINUX开发成长计划

LINUX基础 嵌入式LINUX安装与环境配置完全指南-CSDN博客 基于ViutualBoxUbuntu(Linux)的开发环境搭建-CSDN博客 嵌入式LINUX常见符号与常用命令-CSDN博客 Git

04 FreeRTOS 队列(queue)

1、队列的特性 队列可以理解为一个传送带&#xff0c;一个流水线。 队列可以包含若干个数据&#xff1a;队列中有若干项&#xff0c;这被称为"长度"(length) 每个数据大小固定 创建队列时就要指定长度、数据大小 数据的操作采用先进先出的方法(FIFO&#xff0c;First…

使用 Python 管理串口通信:实现一个串口管理器

程序员老茶 &#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#…

干货分享 —— 如何开展web项目自动化测试!

前言 自动化(Automation)是指机器设备、系统或过程(生产、管理过程)在没有人或较少人直接参与的情况下&#xff0c;根据人的要求&#xff0c;通过自动检测、信息处理、分析判断、操纵和控制&#xff0c;达到预期目标的过程。自动化测试是指测试过程是在没有人为或较少人为干预…

milvus 中的集合与 database

在Milvus中&#xff0c;集合&#xff08;Collection&#xff09;和数据库&#xff08;Database&#xff09;是两个不同的概念&#xff0c;它们之间存在一定的关系。 1. 数据库&#xff08;Database&#xff09; 数据库是Milvus中的最顶层的组织单位&#xff0c;可以理解为一个…