试题编号: 201803-2
试题名称: 碰撞的小球
时间限制: 1.0s
内存限制: 256.0MB

问题描述:

  数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。
  当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。
  当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。
  现在,告诉你线段的长度L,小球数量n,以及n个小球的初始位置,请你计算t秒之后,各个小球的位置。

提示

  因为所有小球的初始位置都为偶数,而且线段的长度为偶数,可以证明,不会有三个小球同时相撞,小球到达线段端点以及小球之间的碰撞时刻均为整数。
  同时也可以证明两个小球发生碰撞的位置一定是整数(但不一定是偶数)。

输入格式

  输入的第一行包含三个整数n, L, t,用空格分隔,分别表示小球的个数、线段长度和你需要计算t秒之后小球的位置。
  第二行包含n个整数a1, a2, …, an,用空格分隔,表示初始时刻n个小球的位置。

输出格式

  输出一行包含n个整数,用空格分隔,第i个整数代表初始时刻位于ai的小球,在t秒之后的位置。

样例输入

3 10 5
4 6 8

样例输出

7 9 9

样例说明

  初始时,三个小球的位置分别为4, 6, 8。

  一秒后,三个小球的位置分别为5, 7, 9。

  两秒后,第三个小球碰到墙壁,速度反向,三个小球位置分别为6, 8, 10。

  三秒后,第二个小球与第三个小球在位置9发生碰撞,速度反向(注意碰撞位置不一定为偶数),三个小球位置分别为7, 9, 9。

  四秒后,第一个小球与第二个小球在位置8发生碰撞,速度反向,第三个小球碰到墙壁,速度反向,三个小球位置分别为8, 8, 10。

  五秒后,三个小球的位置分别为7, 9, 9。


样例输入

10 22 30
14 12 16 6 10 2 8 20 18 4

样例输出

6 6 8 2 4 0 4 12 10 2

数据规模和约定

  对于所有评测用例,1 ≤ n ≤ 100,1 ≤ t ≤ 100,2 ≤ L ≤ 1000,0 < ai < L。L为偶数。
  保证所有小球的初始位置互不相同且均为偶数。

解题思路:

这是一个模拟题,按照时间序列进行模拟,模拟小球的运动过程。好在每个时间单位小球只移动一个位置,处理起来就要简单一些。模拟题关键在于采用什么样的数据表示,这里给出2种解法。

使用数组pos[i]存储第i个球的初始位置;使用数组step[i]存储第i个球现在的运动方向,step[i]=1表示向右走,step[i]=-1表示往左走,用加法运算就可以实现小球的移动。

模拟过程是按照时间序列,先计算小球的下一个位置,如果该位置为两端则改变运动方向。再根据小球的新位置看看有没有2个小球碰头,有的话分别改变运动方向。只是简单地判断2个小球是否碰头需要用暴力法算一下。

解题代码:

#include <iostream>
using namespace std;
const int L = 1000;
int pos[L + 1], step[L + 1];int main()
{int n, l, t;cin >> n >> l >> t;for(int i = 0; i < n; i++) {cin >> pos[i];// 开始往右走,到达两端则回头step[i] = 1;if(pos[i] == l || pos[i] == 0)step[i] = -step[i];}for(int i = 0; i < t; i++) {// 走一步for(int j = 0; j < n; j++) {pos[j] += step[j];// 到达两端则回头if(pos[j] == l || pos[j] == 0)step[j] = -step[j];}// 判断是否碰头,碰头则掉头(要避免重复比较)for(int j = 0; j < n; j++)for(int k = j + 1; k < n; k++)if(pos[k] == pos[j])step[k] = -step[k], step[j] = -step[j];}for(int i = 0; i < n; i++)cout << pos[i] << " ";cout << endl;return 0;
}

CCF201803-2 碰撞的小球相关推荐

  1. 碰撞的小球 ccf (模拟)

    问题描述 试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐 ...

  2. 【CCF】201803-2 碰撞的小球

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体 ...

  3. CCF2018-3-2 碰撞的小球

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有 ...

  4. CCF201803-2 碰撞的小球(100分)【模拟】

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有 ...

  5. CCF 201803 跳一跳 碰撞的小球 url映射 棋局评估

    试题编号: 201803-1 试题名称: 跳一跳 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 近来,跳一跳这款小游戏风靡全国,受到不少玩家的喜爱. 简化后的跳一跳规则如下: ...

  6. 2018-3 碰撞的小球(C++)

    考察: 这题主要考察了struct的使用,以及边界的判断 思路: 我一开始想用bool isVisit[]来简化最后的碰撞判断,但总是错,经过调试发现这就是问题,虽然没明白,如果哪位朋友知道为什么错了 ...

  7. CCF计算机软件能力认证试题练习:201803-2 碰撞的小球

    碰撞的小球 来源:CCF 标签: 参考资料: 相似题目: 题目 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上, ...

  8. CCF CSP 碰撞的小球 C++

    碰撞的小球 代码比较长是因为看错题意,题目要求最后按序号输出位置,因此既要存序号,也要存位置.先将小球按照初始位置排序,定义另一个数组mov来记录小球移动的距离,每过一个单位时间判断是否发生碰撞,并修 ...

  9. 201803-2 碰撞的小球(C++)

    试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处.有 ...

最新文章

  1. 三分钟黑了阿里?马云下死命令留他?吴翰清辟谣:我没黑过阿里
  2. 新版GNS3-安装及配置教程
  3. 微软反垄断案新突破 Win10系统或需剥离可信计算
  4. 前端学习(3049):vue+element今日头条管理-请求获取数据
  5. durpal是否支持php7,drupal7 的安装方法
  6. 听音扒谱app_掌握这些,你也可以轻松扒谱(下)
  7. Rbf神经网络使用Tensorflow实现
  8. 怎么重置计算机网络设置密码,怎么重新设置wifi密码_如何重新设置无线密码?-192路由网...
  9. 如何使用Topcoder
  10. 我是一个将近30岁的女程序员
  11. java filter 重定向_在Filter的doFilter中进行重定向 出现异常
  12. Vue 获取当前地理位置信息
  13. 海康智能分析服务器设置,【胖猴小玩闹】智能门锁与网关: 海康萤石智能门锁的网关分析(三)...
  14. matlab中图像显示函数
  15. Java:Java静态多态性与动态多态性
  16. 在IT行业中,程序员的学历重要吗?
  17. 达人评测 酷睿i5 12450h和锐龙r7 5800h选哪个好 i512450h和r75800h对比
  18. c#通过onvif协议实现视频查看,截图录像ptz控制
  19. 10086登录JS加解密充值讲解
  20. PCB拼板,那几条很讲究的规则~

热门文章

  1. 信息化基础建设 工作流开发
  2. CCNA试验-NAT
  3. vhs预设_使用Linux将VHS数字化,创建Bash完成脚本,Ansible,家庭自动化等
  4. 数据隐私和数据分享_对数据隐私持开放态度
  5. 谈判如何在谈判中_如何避免通过工资谈判把钱留在桌上
  6. html标记语言图像标记_为什么我喜欢这些标记语言
  7. 为什么引入devops_DevOps可以为您的文档做什么?
  8. (23)css3文字阴影text-shadow
  9. Git的使用_思维导图
  10. localStorage sessionStorage