碰撞的小球 201803-2 C++

2023-05-16

文章目录

  • 一、题目
  • 二、解题
    • 1.题目
    • 2.代码
    • 3.提交结果
  • 总结
    • 1.解释


一、题目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

原题目链接

二、解题

1.题目

这段代码通过模拟小球在一维轴上的运动来解决碰撞小球问题。它读入小球的数量 n,轴的长度 L 和运动的时间 t,然后读入每个小球的初始位置并存储在数组 a 中。接下来,代码进入一个循环,循环次数为 t。在每次循环中,代码遍历所有小球,并根据每个小球的方向更新它们的位置。如果小球到达轴的端点,它会反弹并改变方向。如果两个小球相遇,它们也会改变方向。最后,代码输出每个小球在 t 个时间步长后的位置。

2.代码

dev c++ 5.11

//201803-2 碰撞的小球
#include<iostream>
using namespace std;
int a[110]; // 存储每个小球的位置
bool dir[110]; // 存储每个小球的方向
int main(){
    int n,L,t; // n: 小球数量,L: 轴长度,t: 运动时间
    cin>>n>>L>>t;
    for(int i=0;i<n;i++){
        cin>>a[i]; // 读入每个小球的初始位置
    }
    while(t--){ // 循环 t 次
        for(int i=0;i<n;i++){ // 遍历所有小球
            if(dir[i]) a[i]--; // 如果小球方向为左,位置减一
            else a[i]++; // 否则位置加一
            if(a[i]>L){ // 如果小球到达右端点
                a[i]=L-1; // 反弹
                dir[i]=!dir[i]; // 改变方向
            }
            if(a[i]<0){ // 如果小球到达左端点
                a[i]=1; // 反弹
                dir[i]=!dir[i]; // 改变方向
            }
            for(int j=0;j<i;j++){ // 检查是否与其他小球相遇
                if(a[i]==a[j]){ 
                    dir[i]=!dir[i]; // 改变方向
                    dir[j]=!dir[j];
                    break;
                }
            }
        }
    }
    for(int i=0;i<n;i++){ // 输出每个小球的最终位置
        cout<<a[i]<<" ";
    }
    return 0;
}



3.提交结果

在这里插入图片描述

总结

1.解释

这段代码的时间复杂度为 O(t*n^2),因为它需要在每个时间步长内遍历所有小球并检查它们是否相遇。如果 n 和 t 都很大,这段代码可能会运行得比较慢。

一种可能的优化方法是使用更高效的数据结构来存储小球的位置,以便快速检查它们是否相遇。例如,可以使用平衡二叉搜索树来存储小球的位置。这样,在每个时间步长内,可以在 O(log n) 的时间内找到与给定小球相邻的小球,并在 O(log n) 的时间内更新它们的位置。这样,整个算法的时间复杂度就降低到了 O(tnlog n)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

碰撞的小球 201803-2 C++ 的相关文章

  • clang-format格式文件。可以直接复制引用

    Language Cpp BasedOnStyle LLVM AccessModifierOffset 2 AlignAfterOpenBracket Align AlignConsecutiveMacros false AlignCons
  • 环形缓冲区(c语言)

    1 概念介绍 在我们需要处理大量数据的时候 xff0c 不能存储所有的数据 xff0c 只能先处理先来的 xff0c 然后将这个数据释放 xff0c 再去处理下一个数据 如果在一个线性的缓冲区中 xff0c 那些已经被处理的数据的内存就会被
  • JAVA基础06——运算符02

    1 位运算 处理数据类型的时候 xff0c 可以直接对组成整形数值的各个位完成操作 amp 34 and 34 34 or 34 xff08 34 not 34 xff09 34 xor 以下用例皆为byte类型 xff1a xff1a 按
  • TCP/IP协议学习笔记(五)Windows下多线程多客户端的TCP服务端的实现

    使用多线程来实现可与多个客户端通信的服务端 当客户端连接上服务端之后 xff0c 为该客户端创建一个新的线程 xff0c 在该线程中与客户端进行通信 服务端程序中的主线程负责监听并接受客户端的连接请求 xff0c 创建与客户端通信的线程 另
  • docker tomcat ,把webapps.dist里面的全部文件 复制到 webapps下面就行。

    docker tomcat xff0c 把webapps dist里面的全部文件 复制到 webapps下面就行 cp r webapps dist webapps
  • ffmpeg 视频合并,无声或音视不同步

    无声 xff1a 第一个视频无声 xff0c 合并之后整个视频无声 例如上面是我用图片合成的视频 xff0c 就是没有音频的视频 只要没有音频的视频放在最前面 xff0c 那么整个视频都会没有声音 xff0c ffmpeg默认以第一个视频为
  • week4实验A 咕咕东的奇遇(字母圆环)

    题目 xff1a 咕咕东是个贪玩的孩子 有一天 xff0c 他从上古遗迹中得到了一个神奇的圆环 这个圆环由字母表组成首尾相接的环 xff0c 环上有一个指针 最初指向字母a 咕咕东每次可以顺时针或者逆时针旋转一格 例如 a顺时针旋转到z x
  • week13 作业C HDU-1176

    题目 xff1a 在大家不辞辛劳的帮助下 xff0c TT 顺利地完成了所有的神秘任务 神秘人很高兴 xff0c 决定给 TT 一个奖励 xff0c 即白日做梦之捡猫咪游戏 捡猫咪游戏是这样的 xff0c 猫咪从天上往下掉 xff0c 且只
  • week13作业B TT的神秘任务2

    题目 xff1a 在你们的帮助下 xff0c TT 轻松地完成了上一个神秘任务 但是令人没有想到的是 xff0c 几天后 xff0c TT 再次遇到了那个神秘人 而这一次 xff0c 神秘人决定加大难度 xff0c 并许诺 TT xff0c
  • week14作业B Q老师与十字叉

    Input 9 5 5 3 4 4 3 5 5 1 4 5 5 5 3 3 3 4 4 Output 0 0 0 0 0 4 1 1 2 记录每一行 每一列空白的格子数目 xff0c 然后遍历每一个格子 xff0c
  • week14 作业D Q老师染砖

    衣食无忧的 Q老师 有一天突发奇想 xff0c 想要去感受一下劳动人民的艰苦生活 具体工作是这样的 xff0c 有 N 块砖排成一排染色 xff0c 每一块砖需要涂上红 蓝 绿 黄这 4 种颜色中的其中 1 种 且当这 N 块砖中红色和绿色
  • 用队列实现图的拓扑排序

    span class hljs preprocessor include lt stdio h gt span span class hljs preprocessor include lt stdlib h gt span span cl
  • week14作业E Q老师度假

    忙碌了一个学期的 Q老师 决定奖励自己 N 天假期 假期中不同的穿衣方式会有不同的快乐值 已知 Q老师 一共有 M 件衬衫 xff0c 且如果昨天穿的是衬衫 A xff0c 今天穿的是衬衫 B xff0c 则 Q老师 今天可以获得 f A
  • week15作业A ZJM 与霍格沃兹

    ZJM 为了准备霍格沃兹的期末考试 xff0c 决心背魔咒词典 xff0c 一举拿下咒语翻译题 题库格式 xff1a 魔咒 对应功能 背完题库后 xff0c ZJM 开始刷题 xff0c 现共有 N 道题 xff0c 每道题给出一个字符串
  • week16 实验A TT数鸭子

    题目 xff1a 这一天 xff0c TT因为疫情在家憋得难受 xff0c 在云吸猫一小时后 xff0c TT决定去附近自家的山头游玩 TT来到一个小湖边 xff0c 看到了许多在湖边嬉戏的鸭子 xff0c TT顿生羡慕 此时他发现每一只鸭
  • group by分组查询后排序

    group by分组查询后排序 如 xff1a 分组查询 SELECT s name name COUNT s id value FROM t setmeal s t order o WHERE s id 61 o setmeal id G
  • 数据库的视图

    数据库视图的作用 数据库视图是一种虚拟的表 xff0c 它不是一个实际的表 xff0c 而是根据一个或多个实际表的查询结果生成的一个虚拟表 xff0c 它可以看作是对一个或多个表的一个或多个列的子集的逻辑表示 在数据库中 xff0c 视图有
  • Ubuntu开启FTP服务+FileZilla传输文件

    1 Ubuntu安装 FTP 服务 sudo apt install vsftpd 2 本地 写入权限使能 xff0c 首先打开 etc vsftpd conf 进行配置 sudo vim etc vsftpd conf 配置文件中 loc
  • spring集成Junit单元测试出现的问题及解决办法

    spring集成Junit单元测试出现的问题及解决办法 1 在spring集成Junit单元测试的时候 xff0c 所有的集成步骤都没有问题 xff0c 但是在启动测试的时候出现如下问题 xff1a java lang IllegalSta
  • MySQL实验

    表如下 xff1a 学院 xff08 学院代码 xff0c 学院名称 xff09 学生 xff08 学号 xff0c 姓名 xff0c 性别 xff0c 学院代码 xff09 教师 xff08 教师号 xff0c 教师名 xff0c 学院代

随机推荐

  • SpringBoot整合Mybatis-plus代码生成器

    本文还是采用经典实用知识三段论 是什么 xff1f 能干什么 xff1f 怎么干 xff1f 让Mybatis plus代码生成器轻而易举的为你所用 希望文章能够帮到你提高写代码的效率 前言 整合基于在idea已经创建好的Springboo
  • 定义struct结构体数组

    题目要求 xff1a 有3个候选人 xff0c 每个选民只能投票选一人 xff0c 要求编一个统计选票的程序 xff0c 先后输入被选人的名字 xff0c 最后输出各人得票结果 解题思路 xff1a 设一个结构体数组 xff0c 数组中包含
  • AAC高级音频编码

    AAC 的支持现状 目前支持 AAC 的产品还比较少 xff0c 这主要是因为专利使用费大大限制了 AAC 的发展 xff01 不过好在有索尼 诺基亚 苹果 松下四大巨头的鼎力支持 xff0c 场面还不算冷清 重量级的 iPod 和 iPo
  • 三种做法——判断给定的字符序列是否是回文,回文是指一个字符序列以中间字符为基础,两边字符忽略大小写完全相同

    判断给定的字符序列是否是回文 xff0c 回文是指一个字符序列以中间字符为基础 xff0c 两边字符忽略大小写完全相同 xff08 10分 xff09 判断回文多种方法 xff1a 不值得推荐方法 xff1a 纯死脑筋做法 span cla
  • word文件转md文件

    文章目录 一 下载pandoc二 pandoc转换1 cmd进入文件夹2 代码实现 一 下载pandoc 建议使用msi直接安装 xff0c 而不是下载安装包直接使用 xff0c msi的下载方法 xff1a 安装方法 二 pandoc转换
  • JavaScript中定义结构体一维二维多维数组

    相信学过C语言的开发者刚接触JavaScript时都会很不习惯 xff0c C语言中的虽然是结构化面向过程的编程语言 xff0c 但是C语言中也有封装的思想 xff0c 例如C语言结构体和公用体等 xff0c 在他们中都可以直接定义变量 C
  • does not name a type报错的改正方式

    does not name a type报错的改正方式 原代码如下 xff1a 报错 xff1a does not name a type 原因 xff1a 不知道 改正方法 xff1a 把初始化放主函数外面 xff0c 赋值放主函数里面
  • ERROR: Cause: unable to find valid certification path to requested target终极解决方法

    ERROR Cause unable to find valid certification path to requested target终极解决方法 2022 09 20 更新一下 xff1a 报这个错主要是因为网络问题 xff0c
  • yum安装ansible报错如何解决

    yum安装ansible报错解决方案 一 报错信息 xff1a 二 如何解决1 重装虚拟机2 修改yum源3 使用EPEL源4 安装ansible5 测试 文章参考 xff1a https mirrors tuna tsinghua edu
  • FORTRAN基础编程(1)——基本格式及读入输出

    FORTRAN基础编程 xff08 1 xff09 基本格式及输出 读入 文章目录 FORTRAN基础编程 xff08 1 xff09 基本格式及输出 读入书面格式一 Fixed Format 固定格式 二 Free Format 自由格式
  • Anaconda3-2022.05安装与环境配置

    文章目录 1 Anaconda下载方式一 xff1a Anacoda官网下载方式二 xff1a 国内镜像下载 2 Anaconda安装3 Anaconda环境变量配置4 测试是否配置成功 1 Anaconda下载 方式一 xff1a Ana
  • 解题笔记——救援

    解题笔记 救援 救生船从大本营出发 xff0c 营救若干屋顶上的人回到大本营 xff0c 屋顶数目以及每个屋顶的坐标和人数都将由输入决定 xff0c 求出所有人都到达大本营并登陆所用的时间 在直角坐标系的原点是大本营 xff0c 救生船每次
  • 【千奇百怪】java自定义spotbugs检测器

    前两天 xff0c 在对一个代码质量检测平台维护的时候 xff0c 遇到了一个新添加指定规则集的需求 xff0c 在经过一番折腾后否定掉了基于 ANTLR 实现自定义规则 xff1b 基于 CheckStyle 实现自定义规则 xff1b
  • win10深度学习环境配置

    nvidia驱动以及cuda的安装与卸载 下载cuda和对应的cudnn nvidia官网 直接在搜索栏搜索想要下载的版本 xff0c cuda11 x和cudnn11 x 首先安装cuda 安装cuda会自动安装相对应的显卡驱动 xff0
  • 【CCF-CSP】201312-1 出现次数最多的数 C++

    文章目录 一 题目二 解题1 题目解释1 出现次数最多的数2 如果这样的数有多个 xff0c 请输出其中最小的一个 2 代码3 提交结果 三 总结1 代码思路 xff1a 2 其他 一 题目 题目原始链接 xff1a http 118 19
  • 【CCF-CSP】201403-1 相反数 C++

    文章目录 一 题目二 使用步骤1 解题2 代码3 提交结果 总结1 代码思路2 其他 一 题目 原题目链接 二 使用步骤 1 解题 求相反数的队数 xff0c 可以利用相反数的绝对值相等的思路来解题 2 代码 dev c 43 43 5 1
  • 【CCF-CSP】201409-4 最优配餐 C++

    文章目录 一 题目二 解题1 题目2 代码3 提交结果 总结1 代码思路 一 题目 原题目链接 二 解题 1 题目 一个BFS xff08 宽度优先搜索 xff09 的实现 xff0c 用于处理迷宫中的节点 下面是代码的详细解释 xff1a
  • 【CCF-CSP】201412-2 Z字形扫描 C++

    文章目录 一 题目二 解题1 核心2 代码3 提交结果 总结 一 题目 原题目链接 二 解题 1 核心 一个关于矩阵的遍历输出算法 具体来说 xff0c 输出的是一个n n的矩阵z中的所有元素 内层循环的意思是 xff1a 在外层循环中确定
  • 【CCF-CSP】 201604-4 游戏

    文章目录 一 题目二 解题1 题目2 代码3 提交结果 总结1 注意边界 一 题目 原题目链接 二 解题 1 题目 类似于迷宫问题 xff0c 假设有一个n行m列的矩阵 xff0c 其中的一些格子是障碍物 xff0c 机器人从 xff08
  • 碰撞的小球 201803-2 C++

    文章目录 一 题目二 解题1 题目2 代码3 提交结果 总结1 解释 一 题目 原题目链接 二 解题 1 题目 这段代码通过模拟小球在一维轴上的运动来解决碰撞小球问题 它读入小球的数量 n xff0c 轴的长度 L 和运动的时间 t xff