POJ3684(弹性碰撞)各种wrong answer踩坑

我踩过的坑全部都写在注释里面了,供大家参考。

#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string.h> //据说缺了这个会导致某些编译器出错

using namespace std;

int N,H,R,T;
double height[105]; //目前所有double变量最一开始我都用的是float,导致一直wrong answer 后来发现float会损失精度,ACM还是尽量用double
double g = 10.0;

double cal(int time)
{
        if(time<0) //一个很小的T遇到一个放的很高的球可能导致还没轮到这个球下落  边界处理不能少
        {

            return H;
        }
        double t = sqrt(2.0*H/g); //为什么这里你用的是H而不是H+2*R*i呢 是因为把碰撞时的对方看做碰撞后的新的自己,那么对方的直径是自己没有走的一段路。

        int k = int(time/t);

        if(k%2==0)
        {
            double t1 = time-k*t;
            return H-g*t1*t1/2;
        }
        else{
            double t2 = k*t+t-time;
            return H-g*t2*t2/2;
        }

}

int main()
{
    int num=0;
    scanf("%d",&num);

    for(int j=0;j<num;j++)
    {
        scanf("%d%d%d%d",&N,&H,&R,&T);//%d之间不能有空格
        for(int i=0;i<N;i++)
        {
            height[i] = cal(T-i);
        }
        sort(height,height+N);
        for(int i = 0;i<N;i++)
        {
            printf("%.2lf%c",height[i]+2*R*i/100.0,i==N-1?'\n':' ');
        }
    }

    return 0;

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

tensorflow之tf.placeholder 与 tf.Variable区别对比

二者的主要区别在于 Variable:主要是用于训练变量之类的。比如我们经常使用的网络权重,偏置。 值得注意的是Variable在声明是必须赋予初始值。在训...

34040
来自专栏祥子的故事

tensorflow | 维度转换

42350
来自专栏数值分析与有限元编程

可视化 | Tecplot处理混合单元模型

多数情况下,一个有限元模型中包含2种或者2种以上的单元,用Tecplot作后处理该怎么办? 下面的例子中既有三角形单元,又有四边形单元,解决的办法是让四边形单元...

34440
来自专栏章鱼的慢慢技术路

Go指南练习_图像

还记得之前编写的图片生成器吗?我们再来编写另外一个,不过这次它将会返回一个 image.Image 的实现而非一个数据切片。

12820
来自专栏技术沉淀

命令行工具:cut列操作

20370
来自专栏企鹅号快讯

无人驾驶系列——深度学习笔记:Tensorflow基本概念

随着无人驾驶的火爆,深度学习在无人驾驶中的应用受到广泛关注,我在工作中对此有所接触,因此进行了相关学习和整理,给大家大家可以参考。 ? TensorFlow深度...

26060
来自专栏简书专栏

基于tensorflow的一元二次方程回归预测

安装tensorflow命令:pip install tensorflow 下面一段代码能够成功运行,则说明安装tensorflow环境成功。

22330
来自专栏机器学习算法工程师

Java 机器学习库Smile实战(一)SVM

本文不会介绍SVM的基本原理,如果想了解SVM基本原理,请参阅相关书籍。 要使用Java机器学习库Smile,需首先在项目的Maven配置文件pom.xml中添...

480120
来自专栏desperate633

LintCode 最小路径和题目分析代码

给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。

7320
来自专栏简书专栏

基于tensorflow+RNN的新浪新闻文本分类

tensorflow是谷歌google的深度学习框架,tensor中文叫做张量,flow叫做流。 RNN是recurrent neural network的简...

38630

扫码关注云+社区

领取腾讯云代金券