题意:

一根长度为L的木棍上有n只蚂蚁,每只蚂蚁要么往左爬,要么往右爬,速度为1cm/s。当两只蚂蚁相遇时,二者同时掉头,爬到木棍顶端的蚂蚁掉下。给出每只蚂蚁的初始位置和朝向,计算t秒后每只蚂蚁的位置。

思路:

蚂蚁相遇掉头和不掉头继续爬,在整体上没有任何区别,所以只需计算每只蚂蚁t秒后的位置,并确定是哪一只蚂蚁就好。因为题目说明蚂蚁相遇后会掉头,所以蚂蚁的相对位置是不变的,因此把所以蚂蚁目标位置从小到大排序,则从左到右的每个位置对应初始状态下从小到大的每只蚂蚁。

代码:

#include <iostream>
#include <algorithm>
#include <cmath>
#define endl "\n"
using namespace std;typedef long long ll;const int N = 10010;
struct point{int id, n, t;
}b[N], a[N];
bool cmp(point a, point b) {return a.n < b.n;
}
string s[] = {"L", "Turning", "R"};int main()
{int T, l, t, n;cin>>T;for(int i=1; i<=T; i++) {cout<<"Case #"<<i<<':'<<endl;cin>>l>>t>>n;char c;int x;for(int i=0; i<n; i++) {cin>>x>>c;b[i] = (point){i, x, c == 'L' ? -1 : 1};}sort(b, b + n, cmp);int index[N];for(int i=0; i<n; i++)index[b[i].id] = i;for(int i=0; i<n; i++)a[i] = (point){0, b[i].n + b[i].t * t, b[i].t};sort(a, a + n, cmp);for(int i=1; i<n; i++) {if(a[i].n == a[i-1].n)a[i].t = a[i-1].t = 0;}for(int i=0; i<n; i++) {int x = index[i];if(a[x].n < 0 || a[x].n > l)cout<<"Fell off"<<endl;elsecout<<a[x].n<<' '<<s[a[x].t+1]<<endl;}cout<<endl;}
}

UVA 10881 Piotr‘s Ants相关推荐

  1. cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁

    1456. [UVa 10881,Piotr's Ants]蚂蚁 ★   输入文件:Ants.in   输出文件:Ants.out   简单对比 时间限制:1 s   内存限制:128 MB [题目描 ...

  2. 思维题 UVA 10881 Piotr's Ants

    题目传送门 1 /* 2 题意:在坐标轴上一群蚂蚁向左或向右爬,问经过ts后,蚂蚁的位置和状态 3 思维题:本题的关键1:蚂蚁相撞看作是对穿过去,那么只要判断谁是谁就可以了 4 关键2:蚂蚁的相对位置 ...

  3. UVa10881 Piotr's Ants【模拟】

    问题链接:UVa10881 Piotr's Ants. 问题简述: 一根长L厘米的木棍上有n只蚂蚁,已知每只蚂蚁有个开始的位置和爬行方向,速度为1.当两只蚂蚁相撞后,两者同时掉头继续爬行,求按输入顺序 ...

  4. UVa10881 Piotr's Ants

    题意:给出一个长为lcm的棍子,上面有n个蚂蚁,每个蚂蚁的速度为1cm/s,蚂蚁向左或者向右移动,当两个蚂蚁相遇时转向,问t秒后各自的位置 思路:因为蚂蚁速度一样,可以认为当蚂蚁相遇后,各自继续在移动 ...

  5. UVA - 10881(思维题)------蚂蚁走竹竿

    题意:在这个题中.给了你竹竿的长度L,给了你蚂蚁的个数n,然后下边n行是每一只蚂蚁的初始位置.问你在T秒之后每一只蚂蚁的位置. 这个题给的时间是3000ms,如果一直要写模拟的话,有点烦人.其实,做这 ...

  6. UVA10881 Piotr‘s Ants

    #include <iostream> #include <cstdio> #include "bits/stdc++.h" #define ll long ...

  7. UVA-10881 蚂蚁 Piotr's Ants

    题目大意:一根长L厘米的木棍上有n只蚂蚁,每只蚂蚁有个开始的位置和爬行方向,速度为1.当两只蚂蚁相撞后,两者同时掉头继续爬行,求按输入顺序给出每只蚂蚁T秒后的位置后朝向. /*蚂蚁相遇时可以理解为&q ...

  8. uva 10881蚂蚁(思维题)---理清关系

    题目大意:一根长度为L厘米的木棍上有n只蚂蚁每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米秒.当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计).给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置 ...

  9. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

最新文章

  1. MySQL的MVCC机制是什么?
  2. SAP RETAIL商品主数据Basic Data视图里几个让人莫名惊诧的字段
  3. 【总结】Kylin LDAP配置
  4. 分享--关于学习的一些事儿
  5. NLP-基础知识-005(专家系统)
  6. Python爬虫学习笔记(三)——正则表达式
  7. 如何用Excel统计出各科指定分数段的人数?(亲测)
  8. [深度学习-原理篇]什么是循环神经网络RNN与LSTM
  9. mysql 杂记(一)
  10. 树莓派百度语音识别+图灵机器人对话聊天机器人
  11. (转)为什么用ls和du显示出来的文件大小有差别?
  12. 计算机原理与结构 实验1《实验工具使用》
  13. mysql binlog 回滚_【MySQL】Mysql误操作后使用binlog2sql快速回滚
  14. nuxt项目当中出现The client-side rendered virtual DOM tree is not matching server-rendered content
  15. 教你用Python实现经典游戏《小蜜蜂》
  16. 求两点连线与其中一点为球心球的交点——赋MATLAB代码
  17. python为自己龟蜗速更新的小说生成词云
  18. jumpserver版本升级(1.3.1升级到最新版)
  19. [新华三-H3C]ppp实验
  20. 使用Windows任务计划自动运行Python程序

热门文章

  1. JUC-II CPU的微程序设计 计算机组成原理课程设计 微指令编码
  2. python 条件概率_NLTK中的条件概率分布
  3. RabbitMQ详解及其特性
  4. 人脸识别登录:加强系统认证
  5. 支付宝花呗额度一直不涨?阿里老员工说出原因,亲测有效
  6. 人民币金额(数字)大写转换及金币单位切换
  7. 针对宝宝肠胃保护,五大国际医生组织推荐使用爱乐乐益生菌
  8. 同样是技术出身,深夜看完王兴饭否的190条思考,越想越后怕!
  9. ros手柄控制机器人小车(一)
  10. MySQL数据查询之多表查询