数据结构 A 撞来撞去的圆圆的东西

撞来撞去的圆圆的东西

大家以前都玩过弹珠吧,或者橡皮球,或者……呃,反正玩过圆圆的东西是吧(-_-|||||)

好吧,你们可以发挥想象力,头脑中想一个球形物体(弹性、软硬、颜色之类的没有任何限制),之后把它想象成没哟半径的质点。

假设在一个无限长的x轴上有n个质点,每个质点随机选择左右移动,速度均为每秒钟1个单位,如果两个质点相遇,将发生完全弹性碰撞(也就是两个质点各自调头往回走,速度不变)。给定这n个质点的坐标,问T时刻内(含T时刻)所有小球发生碰撞的次数的期望。

输入:

case,第一行输入nT,含义见题目描述。其中n<=1000T<=10^9

第二行输入n个数,表示n个质点的坐标,坐标范围为[-10^9,10^9]

输出:

一个数,为所有小球发生碰撞的次数的期望,末尾保留2位小数。

样例输入:

2 1

3 8

2 1

3 4

样例输出:

0.00

0.25


考虑到质点只会往左或者往右,分别讨论,两质点同向不可能相遇,两质点反向也不能,两者相向时,当满足两质点距离之差小于等于时间的两倍时可能相遇。本题求期望,故直接算,最后除以4即可。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int s[1010];
int main()
{
    int n,t,i,j;
    double ans;
    while(scanf("%d%d",&n,&t)!=EOF)
    {
        for(i=1;i<=n;i++)
        scanf("%d",&s[i]);
        ans=0;
        for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
        if(abs(s[i]-s[j])<=2*t)
        ans++;
        printf("%.2lf\n",ans/4);
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值