C++算法之-小球问题
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++算法之-小球问题相关推荐
- 12球称重C语言算法,12小球称重问题
题目: 已知有12个小球,一样的形状和外观,其中有一个是次品,现在给你一个无砝码的天平,称三次, 把这个次品找出来,并且求出这个次品相对真品是偏重还是偏轻? 解答: 首先把小球分成三堆,每堆四个. A ...
- POJ 2069最小球覆盖 HDU3007最小圆覆盖【模拟淬火算法】
POJ 2069最小球覆盖 1.给定N个三维点,要求覆盖这些点的最小球半径: 2.采用模拟淬火算法,随机选取一个点作为初始解,然后不断向当前最远的点靠近: 3.这是一个不断调整的过程,对应模拟淬火算法 ...
- 小球进盒子C语言,N个小球放进M个盒子算法-Go语言中文社区
N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...
- 算法研究之二叉树小球下落
有一幅二叉树, 最大深度为D. 且所有叶子的深度都相同. 所有结点从上到下从左到 右编号为1,2,3.-.2D- l . 在结点1 有一个小球,它会往下落. 每个内结点上都有一个开 关,初始全部关闭, ...
- 01 C语言实现动态气泡碰撞和移动的效果,小球碰撞,Win7气泡壁纸,碰撞算法
C语言实现动态气泡碰撞和移动的效果 作者 将狼才鲸 创建日期 2023-01-29 Git源码仓库地址:C语言实现动态气泡碰撞和移动的效果 CSDN文章地址:01 C语言实现动态气泡碰撞和移动的效果 ...
- 小球碰壁反弹加分_用Java实现小球碰壁反弹的简单实例(算法十分简单)
用Java实现小球碰壁反弹的简单实例(算法十分简单) 核心代码如下: if(addX){ x+=3; }else{ x-=3; } if(addY){ y+=6; }else{ y-=6; } if( ...
- n个小球放入m个盒子中_N个小球放进M个盒子算法
N个小球放入M个盒子共有多少种方法,并输出的算法设计: 算法思路1 :暴力填充盒子 每个小球都可能放入M个盒子的任意一个,所以直接根据小球个数做递归即可,然后将存储放入hash中排重 //TODO 算 ...
- 算法竞赛入门经典 例题6-6 小球下落(python、C)
同个人网站 https://www.serendipper-x.cn/,欢迎访问 ! 问题描述: 有一颗二叉树,最大深度为D,且所有叶子的深度都相同.所有结点从上到下从左到右编号为 1,2,3,- , ...
- JavaScript算法(实例六)输出日期 / 数组合并 / 小球下落--反弹运动
1.以 YYYY-MM-DD 的格式输出当前日期. var date = new Date(); var year = date.getFullYear(); //月份的返回值是从0开始的,所以获取时 ...
- java 小球抛物线_关于【愤怒的小鸟】其中的算法(自由落体,抛物线,碰撞,反弹)...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 package gui; import java.awt.Color; import java.awt.Graphics; import java.awt ...
最新文章
- Tech UP——EGO北京分会成立啦
- 高情商的孩子是这样的
- array DEMO
- WordPress中使用mod_rewrite设置漂亮链结
- linux怎么杀死线程c语言,教程-linux下c语言编程 第一弹-线程的使用
- JS 对象(Object)和字符串(String)互转
- linux内核编译的image,内核编译时生成uImage的办法
- 2021年软考+BGP邻居实验
- 组装电脑基础知识之内存条
- 图像表示的相关概念:图像深度、像素深度、位深的区别和关系
- AtCoder Beginner Contest 178 C
- GD32E230_timer2解析SIF通讯协议
- 微服务化小团队:让 GitLab、Jenkins 与 Sonar 碰撞出火花
- html5 微网页 点餐_使用HTML5和微数据向网页添加电话号码
- unicode和字符串之间的转换有两种方式
- 关于SpringMVC运行项目时出现404错误
- Win10 21H2 19044+vs2019 WDK驱动开发,错误 MSB8040缓解Spectre 漏洞的库以及输出SXS.DLL的垃圾信息
- 日本旅馆业、民宿分类及管理规定
- 【正点原子STM32连载】第四十七章 汉字显示实验 摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
- HBase的数据热点和Hbase常见避免热点问题的方法