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 模拟小球碰撞过程,可设置两个小球的速度

PAT|中国大学MOOC-浙江大学翁恺-C语言程序设计习题集(更新中)

##2-0. 整数四则运算 时间限制:400 ms 内存限制:65536 kB 代码长度限制:8000 B 判题程序:Standard 作者:乔林(清华大学) 本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。 输入格式: 输入在一行中给出2个正整数A和B。 输出格式: 在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例: 3 ...

小鱼波波波 6万+

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

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

啥也没有 1696

MacOS上VScode配置PlatformIO Core的疑难杂症与提速实战

本文详细解析了在MacOS上使用VScode配置PlatformIO Core时遇到的安装卡死、新建项目缓慢等常见问题,并提供了官方脚本安装、网络优化、命令行预下载等实用解决方案。通过环境变量配置和镜像源加速,大幅提升开发效率,特别适合ESP32等嵌入式开发场景。

weixin_42567046的博客 220

碰撞的小球 201803-2 C++

碰撞的小球 201803-2 C++

qq_45727086的博客 633

告别卡顿!用U盘给你的MacBook Pro 2015+来一次macOS Monterey的‘大扫除’式安装

每次系统升级后,老款MacBook Pro用户最常抱怨的就是"怎么比之前更卡了?"——这不是错觉。系统迭代过程中积累的缓存文件、残留配置和隐形服务,就像房间角落堆积的灰尘,拖慢了整台机器的响应速度。而通过U盘进行的macOS Monterey全新安装,本质上是一次彻底的"数字大扫除":它不仅替换系统文件,还会重建所有索引、清理磁盘碎片,甚至能解决某些玄学般的卡顿问题。对于2015款及之后的MacBook Pro用户,这种安装方式能让老设备重获新生。

weixin_28731223的博客 310

UE5 SplineMesh与StaticMesh性能对比:生成1000米路径的帧率与内存实测

本文深度对比了UE5中SplineMesh与StaticMesh在生成1000米路径时的性能差异,包括帧率、内存占用及实现复杂度。实测数据显示,SplineMesh在Draw Call优化和动态变形场景中表现更优,而StaticMesh适合需要复杂材质变化的场景。文章还提供了优化技巧和选型指南,帮助开发者根据项目需求做出科学决策。

weixin_33976326的博客 315

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

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

MK422的博客 537

PXE 批量安装 Ubuntu 20.04

原文链接:https://www.cpweb.top/1698 一、介绍   Ubuntu 20.04 的服务器安装程序支持新的操作模式:自动安装(automated installation)。自动安装可以通过自动安装配置提前回答所有这些配置问题,并使安装过程无需任何交互即可运行。   在 Ubuntu 18.04 中,用的应答文件是 preseeds(预配置文件),它基于 debian-installer(aka di)来实现自动安装的。需要注意的是,如果你使用的是 cobbler,那你应....

supahero的博客 1万+

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

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

qfccCoder的博客 690

用友U8 API开发实战:手把手教你使用API资源管理器完成单据操作

本文详细介绍了用友U8 API开发实战,重点讲解如何使用API资源管理器完成采购订单、销售出库单等核心业务单据的全生命周期管理。从开发环境搭建到单据查询、新增、修改、删除等基础操作,再到高级功能如审核状态管理、业务事件处理和自定义项扩展,帮助开发者快速掌握用友U8接口开发技巧,提升企业数字化转型效率。

weixin_28607671的博客 595

MicroCap声学仿真介绍(五)-倒相管扬声器系统仿真

实际倒相管的扬声器单体选择、后腔容积、倒相管的直径和长度都是需要精心挑选的,为了便于演示,随意指定了倒相管的长度和直径,现实中还是不能这么随便的。之前介绍了封闭式扬声器的仿真,今天在封闭式扬声器的基础上,再介绍一下倒相管扬声器系统的仿真。

山无忧的博客 1718

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

Unity 编辑器篇|(一)MenuItem菜单栏

"一级菜单/二级菜单上/三级菜单""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""一级菜单/二级菜单中 %#_B""一级菜单/二级菜单下 %&_C""GameObject/二级菜单""CONTEXT/组件名/菜单名""一级菜单/二级菜单上 #_A""Assets/二级菜单""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""一级菜单/二级菜单下""一级菜单/二级菜单上""一级菜单/二级菜单中""一级菜单/二级菜单下""自定义/Test"

游戏开发小Y的博客 13万+

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

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

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

qq_43156236的博客 290

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、付费专栏及课程。

余额充值