• UVA10881蚂蚁


    题意:
         在一个木棍上有只小蚂蚁,他们的移动速度都是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: " ,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 " ,Ans[i].x);
              else printf("%d %c " ,Ans[i].x ,Ans[i].fx ? 'R' : 'L');
           }
           puts("");
        }
        return 0;
    }

     


  • 相关阅读:
    学习再学习···
    Verilog中文件输入与输出任务实例解析(转载)
    入门实验——流水灯
    论文的参考文献
    Testbench新接触(学习笔记)
    Verilog再接触 问题集
    verilog 语句不可综合和可综合汇总
    关于modelsim 6.4a遇到的问题
    DevExpress.XtraEditors.GridLookUpEdit 隐藏列
    Sql 计算一个词出现的次数
  • 原文地址:https://www.cnblogs.com/csnd/p/12062695.html
Copyright © 2020-2023  润新知