问题链接:UVa10881 Piotr's Ants。

问题简述

一根长L厘米的木棍上有n只蚂蚁,已知每只蚂蚁有个开始的位置和爬行方向,速度为1。当两只蚂蚁相撞后,两者同时掉头继续爬行,求按输入顺序输出每只蚂蚁T秒后的位置和朝向。

问题分析

蚂蚁碰头后,仍然是一只往左另一只往右,所以可以看作是各自继续行走。

T秒后位置,有可能变为负或大于木棍的长度,那就是掉落了。

不按照位置进行排序,就无法知道T秒后哪些蚂蚁调头。

过T秒后,蚂蚁的相对位置是不变的,所以按照之前的顺序进行输出即可。

程序说明:(略)

参考链接:(略)

题记:(略)

AC的C++程序如下:

/* UVa10881 Piotr's Ants */#include <iostream>
#include <cstdio>
#include <algorithm>using namespace std;const char *dirname[] = {"L", "Turning", "R"};const int N = 10000;
struct _ant {int no;         // 序号int pos;        // 位置int direction; // 方向:0-2(dirname)bool operator < (const _ant& a) const {return pos<a.pos;}
} before[N], after[N];
int order[N];int main()
{int allcase, l, t, n, pos;char direction;scanf("%d", &allcase);for(int k=1; k<=allcase; k++) {printf("Case #%d:\n", k);scanf("%d%d%d", &l, &t, &n);for(int i=0; i<n; i++) {scanf("%d %c", &pos, &direction);before[i] = _ant{i, pos, (direction == 'L' ? 0 : 2)};after[i] = _ant{0, pos + (direction == 'L' ? -t : t), (direction == 'L' ? 0 : 2)};}// 按蚂蚁位置排序sort(before, before + n);for(int i=0; i<n; i++)order[before[i].no] = i;// 计算终止状态:按蚂蚁位置排序,如果相邻位置相同则置为掉头状态sort(after, after + n);for(int i=0; i<n-1; i++)if(after[i].pos == after[i + 1].pos)after[i].direction = after[i + 1].direction = 1;// 输出结果for(int i=0; i<n; i++) {int j = order[i];if(after[j].pos < 0 || after[j].pos > l)printf("Fell off\n");elseprintf("%d %s\n", after[j].pos, dirname[after[j].direction]);}printf("\n");}return 0;
}

转载于:https://www.cnblogs.com/tigerisland/p/7563768.html

UVa10881 Piotr's Ants【模拟】相关推荐

  1. UVa10881 Piotr's Ants

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

  2. UVA10881 Piotr‘s Ants

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

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

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

  4. 思维题 UVA 10881 Piotr's Ants

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

  5. UVA-10881 蚂蚁 Piotr's Ants

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

  6. UVA 10881 Piotr‘s Ants

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

  7. ICPC程序设计题解书籍系列之二:刘汝佳:《算法竞赛入门经典训练指南》

    第1章 算法设计基础(例题) 1.1思维体操 UVA11292 HDU1902 POJ3646 The Dragon of Loowater[贪心] - 海岛Blog - CSDN博客 UVA1172 ...

  8. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  9. 《题目与解读》红书 训练笔记目录《ACM国际大学生程序设计竞赛题目与解读》

    虽然2012年出版的老书了,但是是由三次世界冠军的上海交大ACM队出版的书籍,选择的题目是ACM经典中的经典,书中有非常详细的题解,可以学到很多东西,值得一刷. 目录 第一部分 第一章 数学 1.1 ...

最新文章

  1. 一个三非渣本的Java校招秋招之路,吊打面试官
  2. Deep Learning 论文笔记 (2): Neural network regularization via robust weight factorization
  3. 为PHP代码在线加密
  4. 只读user表空间损坏(RMAN修复)
  5. 国家信息安全水平考试NISP一级模拟题
  6. xp下固态硬盘测试软件,XP真的老矣?SSD实战XP/Win7/Win8系统
  7. 2019年ArcGIS JavaScript API 4.x添加天地图矢量地图(球面墨卡托)
  8. matlab主成分分析散点图_主成分分析与matlab
  9. last-winner-airdrop
  10. Banner尺寸多大最好!
  11. nginx安装三大的命令的解释./configure make make install
  12. 徒手攀登酋长岩,世界第一人!
  13. 控制系统 丢包 matlab 程序,基于MATLAB的网络控制系统仿真.pdf
  14. 惊闻|万盈:玩一元斗地主 引争执出人命 派出所介入调查
  15. 三大前端构建工具横评,谁是性能之王!
  16. Redis集群生产环境搭建,主从搭建,动态增删步骤
  17. 服务器系统会提示有神兽刷新吗,我的世界神奇宝贝服务器里刷新神兽提示是那些...
  18. linux 软链接重新连接,Linux总结(十二)set_uid set_gid stic_bit 软链接 硬链接
  19. Tomcat9的下载与安装
  20. AcrGIS Pro一键出图

热门文章

  1. 启航RPA卓越生态联盟,艺赛旗打造最强RPA产业生态圈...
  2. SDS趋势之二:对象存储将替代文件存储
  3. NuGet程序包安装SQLite后完全抽离出SQLite之入门介绍及注意事项,你真的懂了吗?...
  4. postgresql数据类型之数组类型
  5. HTML table 和 div
  6. sql server (mssqlserver)无法启动,事件查看器提示SQL Server 无法生成 FRunCM 线程
  7. count(1)、count(*)、count(字段)的区别
  8. LeetCode-MySQL-175. 组合两个表
  9. 框架源码专题:Spring是如何集成Mybatis的?Spring怎么管理Mapper接口的动态代理
  10. 畅享9能更新鸿蒙吗,Mate 9也能升级!鸿蒙系统正式发布:老用户爽了