题目大意:

一根长度为L的木棍一堆蚂蚁爬,向左或向右,速度都为1,若两蚂蚁碰撞则同时转头(转身时间忽略不计),问T时间之后每只蚂蚁的位置;

输入:t,(t个样例),每个样例输入 L,T,n,接下来是n行每行两个数据,一个POS(位置),一个dir(方向);

输出:按输入顺序输出每只蚂蚁的最终位置,若处于碰撞状态则输出Turning,掉下去输出”Fell off“;

解题思路:

本题类似于《挑战程序设计》的一道水题(POJ -1852  Ants),思路题;不过本题输入并不一定是按照位置大小进行输入的,因此,需要一个order数组进行预处理,具体看代码及注释;

AC代码:

#include <iostream>
#include <algorithm>
#include <cmath> using namespace std; /**************************************************** 样例:
2
10 1 4
1 R
5 R
3 L
10 R ****************************************************/ const int maxn = ;
struct ant
{
int id; //输入顺序;
int pos; //实际位置;
int dir; //朝向:
}before[maxn],after[maxn]; bool cmp(ant a,ant b) //按照位置进行排序
{
return a.pos<b.pos;
} const char dire[][]={"L","Turning","R"}; //数组保存输出结果
int order[maxn]; //order数组的作用是保存各蚂蚁终态的相对位置; int main()
{
int t1;
cin>>t1;
for (int kase=;kase<=t1;kase++)
{
cout<<"Case #"<<kase<<":"<<endl;
int l,t,n;
cin>>l>>t>>n;
for (int i=;i<n;i++)
{
int x;
char c;
cin>>x>>c;
int d=(c=='L'?-:);
before[i]=ant{i,x,d};
after[i]=ant{,x+d*t,d}; //朝向依旧是d,因为必有一只蚂蚁的朝向是原来的d,比如(1,R)->(3,R),只不过不知道是那只蚂蚁;
}
sort(before,before+n,cmp);
for (int i=;i<n;i++)
{
order[before[i].id]=i; //before[i].id 是原来数组的输入顺序,现在before按照位置进行排序,那么此时对应的就是当前位置蚂蚁的编号;
//比如样例中排序后before[1]是位置3的蚂蚁,其顺序为3,那么就是order[3]=2;
//那么样例中的order就是 1 3 2 4;
//之后after数组的输出after[order[1]].pos就是5这个位置的末位置;
}
sort(after,after+n,cmp);
for (int i=;i<n-;i++)
{
if (after[i].pos==after[i+].pos)
{
after[i].dir=after[i+].dir=;
}
}
for (int i=;i<n;i++)
{
int a=order[i];
if (after[a].pos < ||after[a].pos>l) cout<<"Fell off"<<endl;
else
{
cout<<after[a].pos<<" "<<dire[after[a].dir+]<< endl;
}
}
cout<<endl;
}
return ;
}

算法竞赛入门经典-训练指南(10881-Piotr's Ants)的更多相关文章

  1. 算法竞赛入门经典训练指南——UVA 11300 preading the Wealth

    A Communist regime is trying to redistribute wealth in a village. They have have decided to sit ever ...

  2. 算法竞赛入门经典 LA 4329(树状数组)

    题意: 一排有着不同能力值的人比赛,规定裁判的序号只能在两人之间,而且技能值也只能在两人之间 问题: <算法竞赛入门经典-训练指南>的分析: 上代码: #include<iostre ...

  3. (Step1-500题)UVaOJ+算法竞赛入门经典+挑战编程+USACO

    http://www.cnblogs.com/sxiszero/p/3618737.html 下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年 ...

  4. 算法竞赛入门经典+挑战编程+USACO

    下面给出的题目共计560道,去掉重复的也有近500题,作为ACMer Training Step1,用1年到1年半年时间完成.打牢基础,厚积薄发. 一.UVaOJ http://uva.onlinej ...

  5. [刷题]算法竞赛入门经典 3-12/UVa11809

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa11809:Floating-Point Numbers 代码: //UVa11 ...

  6. [刷题]算法竞赛入门经典 3-10/UVa1587 3-11/UVa1588

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-10/UVa1587:Box 代码: //UVa1587 - Box #include&l ...

  7. [刷题]算法竞赛入门经典 3-7/UVa1368 3-8/UVa202 3-9/UVa10340

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 都是<算法竞赛入门经典(第二版)>的题目,标题上没写(第二版) 题目:算法竞赛入门经典 3-7/UVa13 ...

  8. [刷题]算法竞赛入门经典 3-4/UVa455 3-5/UVa227 3-6/UVa232

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 题目:算法竞赛入门经典 3-4/UVa455:Periodic Strings 代码: //UVa455 #inclu ...

  9. [刷题]算法竞赛入门经典 3-1/UVa1585 3-2/UVa1586 3-3/UVa1225

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO(我也是在网上找到的pdf,但不记得是从哪里搜刮到的了,就重新上传了一遍) PS:第一次写博客分享我的代码,不知道我对c ...

随机推荐

  1. 第19月第8天 斯坦福大学公开课机器学习 (吴恩达 Andrew Ng)

    1.斯坦福大学公开课机器学习 (吴恩达 Andrew Ng) http://open.163.com/special/opencourse/machinelearning.html 笔记 http:/ ...

  2. html5移动端页面分辨率设置及相应字体大小设置的靠谱使用方式

    对于html5移动端网页编写CSS网上有很多介绍的文章,但在实际使用过程中还是会纠结. 网上的资料太多,且大多都是技术介绍型,特别是针对android上,网上写的各种麻烦,各种复杂,各种不接地气儿.. ...

  3. mysql 5.7 ~ 新特性

    mysql 5.7特性 简介:mysql 5.7内存和线程性能方面的优化一 细节优化 参数:  1 innodb_buffer_pool    改进 innodb_buffer_pool可以动态扩大, ...

  4. D- 泛型练习 ,继承,方法

    unit Unit3; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  5. java 多线程和并行程序设计

    多线程使得程序中的多个任务可以同时执行 在一个程序中允许同时运行多个任务.在许多程序设计语言中,多线程都是通过调用依赖系统的过程或函数来实现的 为什么需要多线程?多个线程如何在单处理器系统中同时运行? ...

  6. C++读写TXT文件中的string或者int型数据以及string流的用法

    对文件的读写操作是我们在做项目时经常用到的,在网上看了很多博客,结合自身的项目经验总结了一下,因此写了这篇博客,有些地方可能直接从别的博客中复制过来,但是都会注明出处. 一.文件的输入输出 fstre ...

  7. camera驱动框架分析(上)【转】

    转自:https://www.cnblogs.com/rongpmcu/p/7662738.html 前言 camera驱动框架涉及到的知识点比较多,特别是camera本身的接口就有很多,有些是直接连 ...

  8. SharePoint 2010:搜索服务当前处于脱机状态

    错误 搜索服务当前处于脱机状态.请访问 SharePoint 管理中心中的"服务器上的服务"页,以验证是否启用了该服务.这也可能是由于正在移动索引器所致.   正在配置网站集搜索关 ...

  9. OCM_第二天课程:Section1 —》配置 Oracle 网络环境

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  10. 测试开发之前端——No6.HTML5中的键盘事件

    键盘事件 由键盘触发的事件. 适用于所有 HTML 5 元素: 属性 值 描述 onkeydown script 当按下按键时运行脚本 onkeypress script 当按下并松开按键时运行脚本 ...