1、问题:

一条直线上有n个小球,初始坐标及速度已知,且球的初始位置两两不相同。若任意两个球相遇后则两球均消失,找出最后还留在直线上的球。

2、算法思路:

任意两个小球之间无非两种情况(一起消失、永不相遇)。那么最先相遇的必然是两个相邻的小球,排除掉这俩球后就又回到了最初的状态。所以把所有球按坐标从小到大排序,用带有排序功能的容器保存相邻小球相遇的时间,每次去掉最先相遇的小球直到剩下的球永不相遇或全部消失。时间复杂度为:O(n log n)

其实想起来不是很难,但是实际实现你会发现,还是有很多细节需要考虑的。举个例子,若当前剩下球a、b、c、d,b和c最先相遇,去掉(b,c)后如何快速定位并删除(a,b)和(c,d)并构建(a,d)。

3、代码实现

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define urp(i,a,b) for(int i=(a),__tzg_##i=(b); i>=__tzg_##i; --i)
#define rp(i,b) for(int i=(0), __tzg_##i=(b);i<__tzg_##i;++i)
#define rep(i,a,b) for(int i=(a), __tzg_##i=(b);i<__tzg_##i;++i)
#define repd(i,a,b) for(int 

C++算法之-小球问题相关推荐

  1. 12球称重C语言算法,12小球称重问题

    题目: 已知有12个小球,一样的形状和外观,其中有一个是次品,现在给你一个无砝码的天平,称三次, 把这个次品找出来,并且求出这个次品相对真品是偏重还是偏轻? 解答: 首先把小球分成三堆,每堆四个. A ...

  2. POJ 2069最小球覆盖 HDU3007最小圆覆盖【模拟淬火算法】

    POJ 2069最小球覆盖 1.给定N个三维点,要求覆盖这些点的最小球半径: 2.采用模拟淬火算法,随机选取一个点作为初始解,然后不断向当前最远的点靠近: 3.这是一个不断调整的过程,对应模拟淬火算法 ...

  3. 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区

    N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...

  4. 算法研究之二叉树小球下落

    有一幅二叉树, 最大深度为D. 且所有叶子的深度都相同. 所有结点从上到下从左到 右编号为1,2,3.-.2D- l . 在结点1 有一个小球,它会往下落. 每个内结点上都有一个开 关,初始全部关闭, ...

  5. 01 C语言实现动态气泡碰撞和移动的效果,小球碰撞,Win7气泡壁纸,碰撞算法

    C语言实现动态气泡碰撞和移动的效果 作者 将狼才鲸 创建日期 2023-01-29 Git源码仓库地址:C语言实现动态气泡碰撞和移动的效果 CSDN文章地址:01 C语言实现动态气泡碰撞和移动的效果 ...

  6. 小球碰壁反弹加分_用Java实现小球碰壁反弹的简单实例(算法十分简单)

    用Java实现小球碰壁反弹的简单实例(算法十分简单) 核心代码如下: if(addX){ x+=3; }else{ x-=3; } if(addY){ y+=6; }else{ y-=6; } if( ...

  7. n个小球放入m个盒子中_N个小球放进M个盒子算法

    N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...

  8. 算法竞赛入门经典 例题6-6 小球下落(python、C)

    同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从上到下从左到右编号为 1,2,3,- , ...

  9. JavaScript算法(实例六)输出日期 / 数组合并 / 小球下落--反弹运动

    1.以 YYYY-MM-DD 的格式输出当前日期. var date = new Date(); var year = date.getFullYear(); //月份的返回值是从0开始的,所以获取时 ...

  10. java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package gui; import java.awt.Color; import java.awt.Graphics; import java.awt ...

最新文章

  1. Tech UP——EGO北京分会成立啦
  2. 高情商的孩子是这样的
  3. array DEMO
  4. WordPress中使用mod_rewrite设置漂亮链结
  5. linux怎么杀死线程c语言,教程-linux下c语言编程 第一弹-线程的使用
  6. JS 对象(Object)和字符串(String)互转
  7. linux内核编译的image,内核编译时生成uImage的办法
  8. 2021年软考+BGP邻居实验
  9. 组装电脑基础知识之内存条
  10. 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
  11. AtCoder Beginner Contest 178 C
  12. GD32E230_timer2解析SIF通讯协议
  13. 微服务化小团队:让 GitLab、Jenkins 与 Sonar 碰撞出火花
  14. html5 微网页 点餐_使用HTML5和微数据向网页添加电话号码
  15. unicode和字符串之间的转换有两种方式
  16. 关于SpringMVC运行项目时出现404错误
  17. Win10 21H2 19044+vs2019 WDK驱动开发,错误 MSB8040缓解Spectre 漏洞的库以及输出SXS.DLL的垃圾信息
  18. 日本旅馆业、民宿分类及管理规定
  19. 【正点原子STM32连载】第四十七章 汉字显示实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  20. HBase的数据热点和Hbase常见避免热点问题的方法

热门文章

  1. 证书链——区块链电子证书系统
  2. 关于相机(摄相头)的选用
  3. 戴个美瞳却患上了角膜炎和干眼症?
  4. IFrame里面的子页面html内容变化时,怎么动态改变IFrame的高度
  5. android-Message.obtain和handler.obtainMessage
  6. spotbug常见错误心得
  7. 【零基础小白的华丽蜕变】AIX 操作系统 + ODM 库 + SMIT 工具
  8. Java 实现 百度地图
  9. 中首清算:她被誉为中国第一美女,迷倒国际花花公子,今36岁仍单身
  10. git大坑---cleanup