题意:

     在一个木棍上有只小蚂蚁,他们的移动速度都是1,移动的时候如果和别的蚂蚁碰面
,那么碰面的这两只小蚂蚁会马上掉头继续走,给你每只蚂蚁的初始距离木棒左端点的距离和方向,以及木棍长度,问你t时间后每个蚂蚁的状态。

思路:

      比较有意思的题,其实对于这个题目,我们考虑下,如果所有的蚂蚁都没有区别,
那么两只蚂蚁相遇是不是相当于"穿过去"了?那么有区别的时候呢?其实也可以考虑是直接穿过去了,只不过蚂蚁的名字一直在变化而已,但无论怎么变,蚂蚁的相对位置不会改变.所以我们可以对初始的蚂蚁的位置进行排序<之前记得存上他们的id>,然后在把最终的位置处理出来,然后在排序,然后在一一对应给赋值回去,至于方向也是跟着最终位置一起赋值回去,具体细节看代码。<我的代码比较随意,想看标准点的白书上应该有第一单元例5>.

#include<map>

#include<stdio.h>

#include<string.h>

#include<algorithm>

#define N 11000

using namespace std;

typedef struct

{

   int x ,id ,fx;

}NODE;

typedef struct

{

   int x ,fx;

}E;

NODE node[N];

E End[N] ,Ans[N];

map<int ,int>mark;

bool camp1(NODE a ,NODE b)

{

   return a.x < b.x;

}

bool camp2(E a ,E b)

{

   return a.x < b.x;    

}

int main()

{

    int c ,cas = 1 ,t ,n ,l ,i;

    char str[5];

    scanf("%d" ,&c);

    while(c--)

    {

       scanf("%d %d %d" ,&l ,&t ,&n);

       for(i = 1 ;i <= n ;i ++)

       {

           scanf("%d %s" ,&node[i].x ,str);

           node[i].fx = str[0] == 'R' ? 1 : 0;

           node[i].id = i;

       }

       sort(node + 1 ,node + n + 1 ,camp1);

       mark.clear();

       for(i = 1 ;i <= n ;i ++)

       {

          if(node[i].fx) End[i].x = node[i].x + t;

          else End[i].x = node[i].x - t;

          mark[End[i].x] ++;

          End[i].fx = node[i].fx;

       }

       sort(End + 1 ,End + n + 1 ,camp2);

       for(i = 1 ;i <= n ;i ++)

       Ans[node[i].id] = End[i];

       printf("Case #%d:\n" ,cas ++);

       for(i = 1 ;i <= n ;i ++)

       {

          if(Ans[i].x < 0 || Ans[i].x > l) puts("Fell off");

          else if(mark[Ans[i].x] > 1) printf("%d Turning\n" ,Ans[i].x);

          else printf("%d %c\n" ,Ans[i].x ,Ans[i].fx ? 'R' : 'L');

       }

       puts("");

    }

    return 0;

}

UVA10881蚂蚁的更多相关文章

  1. Uva---10881 Piotr's Ants(蚂蚁)

    Problem DPiotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them ...

  2. UVa 10881 蚂蚁

    https://vjudge.net/problem/UVA-10881 题意: 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒.当两只蚂蚁相撞时,二者同时掉头. ...

  3. Uva10881 Piotr's Ants

    蚂蚁相撞会各自回头.←可以等效成对穿而过,这样移动距离就很好算了. 末状态蚂蚁的顺序和初状态其实是相同的. 那么剩下的就是记录每只蚂蚁的标号,模拟即可. /*by SilverN*/ #include ...

  4. 蚂蚁【A001】

    [1005]出自附中练习场,其他编号(1005)[难度A]——————————————————————————————————————————————————————————————————————— ...

  5. [ACM_模拟] UVA 10881 Piotr's Ants[蚂蚁移动 数组映射 排序技巧]

    "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one ...

  6. 01_蚂蚁感冒(第五届蓝桥预赛本科B组第8题 nyoj 990)

    问题来源:第五届蓝桥预赛本科B组第8题 问题描述:有在一条定长(100cm)的直杆上有n(1<n<50)只蚂蚁(每只蚂蚁的起点都不一样),他们都以相同的速度(1cm/s)向左或者向右爬,  ...

  7. [CareerCup] 7.2 Ants on Polygon 多边形上的蚂蚁

    7.2 There are three ants on different vertices of a triangle. What is the probability of collision ( ...

  8. [OpenJudge 3064]坠落的蚂蚁

    [OpenJudge 3064]坠落的蚂蚁 试题描述 一根长度为1米的木棒上有若干只蚂蚁在爬动.它们的速度为每秒一厘米或静止不动,方向只有两种,向左或者向右.如果两只蚂蚁碰头,则它们立即交换速度并继续 ...

  9. 蚂蚁运输(ant)

    蚂蚁运输(ant)Time Limit:5000ms Memory Limit:64MB[题目描述] LYK 在观察一些蚂蚁.蚂蚁想要积攒一些货物来过冬.积攒货物的方法是这样的.对于第i只蚂蚁, 它要 ...

随机推荐

  1. springmvc字符 中文乱码问题

    springmvc字符 中文乱码问题 1.字符过滤器 输入中文测试,发现乱码 以前乱码问题通过过滤器解决 , 而SpringMVC给我们提供了一个过滤器 , 可以在web.xml中配置,修改了xml文 ...

  2. cve-2019-2725 反序列化远程代码执行

    描述:部分版本WebLogic中默认包含的wls9_async_response包,为WebLogic Server提供异步通讯服务.由于该WAR包在反序列化处理输入信息时存在缺陷,攻击者可以发送精心 ...

  3. SHELL编程概念&变量剖析

    一.shell软件概念和应用场景 1) 学习Linux技术,不是为了学习系统安装.命令操作.用户权限.配置IP.网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件.程序(Apa ...

  4. AtCoder Beginner Contest 171-175 F

    171 F - Strivore 直接把初始字符当成隔板,统计的方案数会有重复 为了避免重复情况,规定隔板字母尽可能最后出现,即在隔板字母后面不能插入含隔板字母的字符串 所以在隔板字母后插入的字符只有 ...

  5. java常见面试题2:求出两个正整数的最大公约数

    概念: 最大公约数:两个整数共有因子中最大的一个 方法一: 如果两个数相等,则最大公约数为它本身,两个数不等,则用两个数依次除 两个数中最小的一个到 1,直到找到同时能被两个数除尽的那个数 代码清单: ...

  6. IntelliJ IDEA安装lombok

    1. 搜索Plugins 点击下方的Browse repositories.. 2.点击安装,重新启动

  7. MySQL按天备份二进制日志

    #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:guozhen.zhang     import MySQLdbimport timeimp ...

  8. mysql 统计新增每天数据

    #创建基表 CREATE TABLE `table_sum` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `table_name` varchar(50) ...

  9. Bi-shoe and Phi-shoe LightOJ - 1370(数论+素数筛)

    题目链接:https://vjudge.net/problem/LightOJ-1370 题意:给你N个欧拉函数值,找出每一个大于等于该欧拉函数值的数,并且要求相加和最小. 题解:因为素数i的欧拉函数 ...

  10. 《逆向工程核心原理》Windows消息钩取

    DLL注入--使用SetWindowsHookEx函数实现消息钩取 MSDN: SetWindowsHookEx Function The SetWindowsHookEx function inst ...