CCF 201803-2 碰撞的小球 c++

CCF CSP201803-2碰撞的小球(c++100) CCF CSP201803-2碰撞的小球 简单模拟 #include<iostream> #include<cstring> #include<algorithm> using namespace std; struct Ball{ int point,v,sno; }ball[110]; bool cmp1(Ball a,Ball b){ if(a.point == b.point) return a.sno < b.sno; return a.point 阅读详情

在这里插入图片描述
//用两个数组分别记录小球的位置和方向。对n个小球分别调整t轮,每一轮更新方向和位置,必须先更新方向再更新位置:到达最左端方向调整为向右,到达最右端方向调整为向左;相撞后方向取反;其他时刻向右走一步加1,向左走一步减1,可以统一表示为a[j]+b[j]。注意这n个小球的初始位置是无序的,所以不能a[i]==a[i+1]表示碰撞。检测碰撞的时候内层循环要从k=j+1开始,否则每对相当于改变了两次符号,就错了。

#include <iostream>
using namespace std;
int main()
{
    int n,t,L;
    cin >> n >> L >> t;
    int a[1000]={0},b[1000]={0};
    for(int s=0;s<n;s++)//初始值存入数组
    {
       cin >> a[s];
       b[s]=1;//方向初始化为向右
    }
    for(int i=0;i<t;i++)//t轮调整
    {
        //处理端点方向
        for(int j=0;j<n;j++)
        {
             if(a[j]==0) b[j]=1;
             else if(a[j]==L) b[j]=-1;
        }
        //处理相撞后的方向
        for(int j=0;j<n;j++)
        {
            for(int k=j+1;k<n;k++)
            {
              if(a[j]==a[k])
              {
                 b[j]*=-1;
                 b[k]*=-1;
              }
               
            }
        }
        //位置更新
        for(int j=0;j<n;j++)
              a[j]+=b[j];
    }
    for(int k=0;k<n;k++)
           cout << a[k] << " ";
    //cout << endl;
    return 0;
}

以上是100分代码

二刷:

#include <bits/stdc++.h>
struct point{
	int pos;
	int flag;//1右-1左 
};
using namespace std;
int main()
{
	int n,l,t;
	cin >> n >> l >> t;
	point a[n];
	for(int i=0;i<n;i++)
	{
	    cin >> a[i].pos;
		a[i].flag=1;	
	}
	for(int j=0;j<t;j++)
	{
		for(int i=0;i<n;i++)
		{
		    if(a[i].pos==l)
			{
				a[i].flag=-1;
			}  
		    if(a[i].pos==0)  
			{
				a[i].flag=1;	
			}		
	    }
	    for(int i=0;i<n;i++)
	    {
	    	for(int k=i+1;k<n;k++)
			{
				if(a[i].pos==a[k].pos)
				{
					a[i].flag*=-1;
					a[k].flag*=-1;
				}
			} 
	    }
	    for(int i=0;i<n;i++)
	    {
	    	a[i].pos+=a[i].flag;
	    }
	}
	for(int i=0;i<n;i++)
	{
		cout << a[i].pos << " ";
	}
	return 0;
}
CCF CSP 201803-2 碰撞的小球(C++解法 100分) 问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。   当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。  ... 阅读详情

相关推荐

C++小球碰撞C++ 小球碰撞

C++ 小球碰撞 C++ 小球碰撞 C++ 小球碰撞

若干小球碰撞的一种暴力解题法

目录引言具体解法问题描述输入输出样例输入样例输出解题思路代码实现总结 引言        高中物理有一个十分经典的问题,即小球碰撞问题。将这个物理问题简化,不考虑能量损耗,且假设每个小球的速度大小与质量都一致,就成为一个经典的算法问题,即给定若干小球的初始位置与速度矢量,计算一段时间后各小球的位置与运动情况。        这是一个很经典的问题,也已经有了许多C语言的

weixin_52925292的博客 1488

小球碰撞代码c++

c++编写,简单易懂,大师手笔 28/10/200 Programmer: Dimitrios Christopoulos * Windows Frame Code Was Published By Jeff Molofee 2000 * Code Was Created By David Nikdel For NeHe Productions * If You've Found This Code Useful, Please Let Me Know. * Visit My Site At nehe.gamedev.net #include // Header File For Windows #include // Header File For Math Library Routines #include // Header File For Standard I/O Routines #include // Header File For Standard Library #include // Header File For The OpenGL32 Library #include // Header File For The GLu32 Library #include "tvector.h" #include "tmatrix.h" #include "tray.h" #include #include "image.h"

运动物体碰撞算法演示【转】

1,test.js代码var getFlag=function (id) { return document.getElementById(id); //获取元素引用 } var extend=function(des, src) { for (p in src) { des[p]=src[p]; } return des; } var clss=['

feihuadao的专栏 1787

VC++模拟小球碰撞

利用VC++6.0 MFC 模拟小球碰撞过程,可设置两个小球的速度

【Tableau】解决订阅报表PDF中文显示为乱码(方框)问题

一、问题描述 在tableau server网页端报表中文字符能正常显示,但在订阅后发送到邮箱时,以图片格式呈现的内容中中文字符显示为方框。 网页端报表能正常显示中文字符: 邮件中的报表不能正常显示中文字符: 二、问题分析 网页端字符显示情况是由html编码决定的,而tableau生成图片时是通过所部署的服务器的字体文件显示字体。因此可能是由于Linux服务器缺失相关的字体文件导致网页端选择的中文字体在服务器上缺失对应的字体文件导致的。则考虑在服务器引入对应的字体文件。 三、问题解决 1、查看服务器现有

why_not_study的博客 2833

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

试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点...

啥也没有 1696

【无标题】 Python自动化法律文书撰写

Jinja2是一个功能强大的模板引擎,支持丰富的语法和功能。除了条件判断和循环语句外,Jinja2还支持过滤器、宏、继承等高级特性,非常适合处理复杂的文书模板。

master_chenchen的博客 2062

碰撞的小球 201803-2 C++

碰撞的小球 201803-2 C++

qq_45727086的博客 633

给STM32F4装上耳朵:用麦克风模块和Keil MDK实现你的第一个语音指令(附完整代码)

本文详细介绍了如何使用STM32F4开发板和麦克风模块实现简单的语音指令识别系统。通过Keil MDK开发环境配置、ADC音频采样、语音活动检测和模板匹配算法,开发者可以快速构建响应'开灯'、'关灯'等基础指令的语音交互方案。文章包含完整代码实现和调试技巧,特别适合STM32初学者入门语音识别领域。

weixin_29171087的博客 434

LDO 上电过冲的根因

LDO在上电瞬间常出现短时过冲电压(3.4V-3.5V),可能损坏敏感器件。其根本原因是:低

硬核科技 293

C++实现CCF201803-2 碰撞的小球

问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。   当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。 ...

MK422的博客 537

机器人轨迹规划——三次样条轨迹1(基于速度的求解方法)

三次样条轨迹是利用三次样条曲线来对给定的一系列点进行插值,从而得到一个光滑的轨迹。三次样条因为每段的多项式次数最高都是三阶的,所以可以得到2阶导数连续,也就是加速度连续的轨迹。假设给定了一系列的点q0q1q2qnq0​q1​q2​...qn​,以及每个点对应的参数t0t1t2tnt0​t1​t2​...tn​,计算一条三次样条曲线sts(t)st,该曲线通过给定的点q0q1q2qnq0​q1。

出门搔白首,若负平生志 1471

CCF201803-2碰撞的小球C++实现满分

思路 小球的结构体: typedef struct { int x; bool v; }Ball; x表示小球的位置,v表示小球的运动方向,true为向右,false为向左。   该问题的核心是弄清楚小球每移动一步之后的位置以及方向何时改变,由此我们把问题分为两个小问题: 1、小球的移动 2、小球方向的改变 为了记录小球的位置以便判断是否改变方向,我们定义一个数组dire[],初...

qfccCoder的博客 690

LLM Wiki 的完整输入体系:LLM Wiki极简实战

LLM Wiki 的输入分为**四大类**,覆盖从"原始知识注入"到"系统行为控制"的全流程,所有输入都遵循"**原始资料不可变,规则可迭代,人类反馈闭环**"的核心原则。

ZhangJiqun&191cm&85kg 320

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。

qq_64693987的博客 2208

CCF-CSP 201803-2 碰撞的小球

CCF-CSP 201803-2 碰撞的小球问题描述代码 问题描述 代码 #include<iostream> using namespace std; bool bang(int x,int j,int n,int a[]){ for(int i=0;i<n;i++){ if(i!=j && a[i] == x) return true; } return false; } int main(){ int n,L,t; cin>>n>

SYSU_Zhiyuan 249

YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!

🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。

**My Coding Family** 7439

ccf csp认证 201803-2 碰撞的小球100分代码 c++

试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB #include <iostream> using namespace std; struct Ball{ int set; bool flag=true; }; struct llu{ int ball1=-1; int ball2=-1; }; int main(in...

weixin_43620061的博客 231

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ccf 201803-1 跳一跳 201803-2 碰撞的小球 AC代码 C++

目录 跳一跳AC代码 碰撞的小球 思路 AC代码 #include<iostream> #include <cstdio> using namespace std; int main() { int num; int sum=0; int temp; while(~scanf("%d",&num)&&num!=0) { ...

sinat_35645479的博客 266

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CCF 201803-2 碰撞的小球 C++版

问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。   当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动...

qq_43156236的博客 290

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

CCF碰撞的小球

## CCF 201803-2 碰撞的小球 #include<bits/stdc++.h> using namespace std; struct ball{ int s; bool direction; //true 为右移, false为左移。 }; ball index[1050]; int main(){ int n, L, t; cin >...

my_new_journey的博客 124

CCF---201803-2---碰撞的小球---C++

问题描述 /  数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。   当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。 ...

Ashen的博客 454

CCF认证201803-2碰撞的小球

CCF认证201803-2碰撞的小球题目描述算法设计+题目分析注意点+记录点代码(100分)感谢链接 题目描述 CCF认证201803-2碰撞的小球 算法设计+题目分析 分析题目: 1、读入所有数据,初试化每个小球的位置、方向、是否改变过方向; 2、在每一秒,先判断小球的方向是否发生了变化,如果发生了变化,就重置小球的方向(变化条件是:触边、碰撞); 3、根据当前的所有小球的参数,走一步; 4、循...

weixin_38562500的博客 391

CCF碰撞的小球(201803-2)

题的链接:CCF碰撞的小球(201803-2) 题解: 模拟每一秒钟的变化即可,模拟每一次时都要预先去判断当前有没有两个小球以及相遇并且方向相反,若相遇了,则需要将它的方向改变一下,变为相反的方向,然后再对每个小球进行加1操作,分情况讨论: 1、朝右走,没有走到头,则直接++,走到头的话,则方向变为-1, 位置–;2、朝左走,没有到达起点,则直接–, 到达起点的话,则改变为相反的方向,位置++即可...

小牛的博客 182

ccf_201803-2_碰撞的小球(c++)

试题编号: 201803-2 试题名称: 碰撞的小球 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。   当小球到达线段的端点...

aoe_xiu的博客 566
上一篇: CCF 201803-1 跳一跳 C++
下一篇: CCF 201712-1 最小差值 C++
cloudless_sky
博客等级 码龄8年 106粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值