弹性碰撞的题目一般都是指碰到就会掉转方向的一类题目,这里我们可以忽略掉头,仅仅看成擦肩而过,交换名字等等

题意:一条线上N只蚂蚁,每只蚂蚁速度固定,方向和坐标不同,碰头后掉头,求最后掉下去那只蚂蚁的名字。

思路:

  1. 如果只有一只蚂蚁,就可以计算了
  2. 但是如果题目很多只,这个时候就要用上弹性碰撞题目的解题技巧
  3. 到最远的那只,确定它前进的方 向
  4. 找到前进方向有多少只跟其方向相反(即交换了多少次名字)
  5. 最后交换名字的那一只就是ans

特别主要开始时,要通过position来区分往右还是左

解决题目的代码:

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <cstring>
#include <vector>
#include <queue>
#include <string>
#include <iomanip>
using namespace std;
#define maxn 32000+16 struct node {
double position;
string name;
bool operator< (const node other)const {
return abs(position) < abs((other.position));
}
}ih[maxn]; int main()
{
int n;
while (cin >> n && n)
{
double l, v;
cin >> l >> v;
for (int i = ; i < n; i++)
{
char pn;
cin >> pn >> ih[i].position >> ih[i].name;
if (pn == 'n' || pn == 'N')
{
ih[i].position = -ih[i].position;
}
}
sort(ih, ih + n);
//找到最远的点
double max_d = 0.0;
int id=;
bool right = true;
for (int i = ; i < n; i++)
{
double ps = (ih[i].position < 0.0 ? : l) - ih[i].position;
if (max_d < ps)
{
max_d = ps;
id = i;
right = ih[i].position > 0.0;
}
}
//与这个点方向相反的点有
int count = ;
if (right)
{
for (int i = id; i < n; i++)
{
if (ih[i].position < 0.0)
count++;
}
id += count;
}
else {
for (int i = id; i>=; i--)
{
if (ih[i].position > 0.0)
count++;
}
id -= count;
}
double result = max_d / v;
cout << setw() << fixed << setprecision() << (int)(result * ) / 100.0 << ' ' << ih[id].name << endl;
}
return ;
}

poj 2674 线性世界 弹性碰撞的更多相关文章

  1. POJ 2674 Linear world(弹性碰撞)

    Linear world Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 4426   Accepted: 1006 Desc ...

  2. Greedy:Linear world(POJ 2674)

      Linear world 题目大意:一些人生活在线性世界中,到达线性世界两端就会消失,两个人的前进方向有两个,相遇会改变各自相遇方向,求最后一个人掉下的人的名字和时间. 其实这一题就是弹性碰撞的模 ...

  3. POJ 2674 Linear world

    POJ 2674 Linear world 题目大意: 一条线上N只蚂蚁,每只蚂蚁速度固定,方向和坐标不同,碰头后掉头,求最后掉下去那只蚂蚁的时间和名字. 注意两点: 相撞可视为擦肩而过,蚂蚁们不管掉 ...

  4. POJ 1745 线性和差取余判断

    POJ 1745 线性和差取余判断 题目大意:每个数都必须取到,相加或相减去,问所有的方案最后的得数中有没有一个方案可以整除k 这个题目的难点在于dp数组的安排上面 其实也就是手动模仿了一下 比如 一 ...

  5. poj 3684 Physics Experiment 弹性碰撞

    Physics Experiment Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1489   Accepted: 509 ...

  6. POJ 3661 (线性DP)

    题目链接: http://poj.org/problem?id=3661 题目大意:牛跑步.有N分钟,M疲劳值.每分钟跑的距离不同.每分钟可以选择跑步或是休息.一旦休息了必须休息到疲劳值为0.0疲劳值 ...

  7. POJ 2674

    Linear world Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 2448   Accepted: 564 Descr ...

  8. Dirichlet's Theorem on Arithmetic Progressions POJ - 3006 线性欧拉筛

    题意 给出a d n    给出数列 a,a+d,a+2d,a+3d......a+kd 问第n个数是几 保证答案不溢出 直接线性筛模拟即可 #include<cstdio> #inclu ...

  9. Goldbach's Conjecture POJ - 2262 线性欧拉筛水题 哥德巴赫猜想

    题意 哥德巴赫猜想:任一大于2的数都可以分为两个质数之和 给一个n 分成两个质数之和 线行筛打表即可 可以拿一个数组当桶标记一下a[i]  i这个数是不是素数  在线性筛后面加个装桶循环即可 #inc ...

随机推荐

  1. 微信小程序电商实战-商品详情(上)

    先看一下今天要实现的小程序商品详情页吧!   商品详情.gif 本期我们要实现小程序商品详情页的头部标题.头部轮播.商品详情浮动按钮和商品内页布局. 一.设置头部标题 如上图所示,头部标题是商品详情 ...

  2. 用代码初始化AE控件许可

    当AE二次开发与其他平台一起使用的时候,有时候会不方便加LicenseControl控件,需要用代码初始化许可: 在构造函数中初始化许可: public Form1() { InitializeCom ...

  3. css3 animatehue属性

    -webkit-perspective(-moz,-o,perspective下同)表示透视范围大小: -webkit-transform-style很好理解了,表示变换类型,preserve-3d看 ...

  4. gradle方式集成融云sdk dlopen failed: library "libsqlite.so" not found

    1.gradle implementation 'cn.rongcloud.android:IMLib:2.8.6' implementation 'cn.rongcloud.android:IMKi ...

  5. --disable-column-names,--skip-column-names,--column-names=0

    --disable-column-names,--skip-column-names,--column-names=0

  6. 翻译-ExcelDNA开发文档-首页

    转载自个人主页 前言 ExcelDNA是一名国际友人开发的开源框架,文档全是英文文档,当时看的时候非常吃力,现在将英文文档翻译过来,为的是让自己加深印象以及自己以后看的时候能不用这么吃力. 介绍 Ex ...

  7. webstrom使用

    主题 主题下载:http://color-themes.com/?view=index&page=1&order=popular&search=&layout=HTML ...

  8. PHP:global全局变量的使用

    global全局变量能够让我们更好的去运用,直接上例子: 1.一个函数,获取函数外的内容: 得到的结果: 2.两个函数,函数2获取函数1的全局变量内容:(重点) 结果: 以上就是我的总结啦 END

  9. TP5.1:模板继承(重要知识点)

    1.在app\index\controller文件夹新建一个名为Lyot(自定义)的控制器,在控制器中定义: 2.创建一个被继承的public(自定义)文件夹,里面有三个文件,分别是header.ht ...

  10. TP5.1:连接数据库(全局配置、动态配置、DSN配置)

    前提: (1)在app\index\controller文件下新建一个名为Connect.php的控制器文件 (2)建立一个名为user_curd数据库,里面有一张user表,表内容为: 通过全局配置 ...