• UVA10881Piotr's Ants


    感觉很巧妙的一道题 之前比赛做过一道题与这个类似 当时没想出来

    很多蚂蚁在一条线上走 对撞之后改变方向 问T时间之后 蚂蚁分别在哪里 蚂蚁都是一样的 可以把蚂蚁看做一个点 对撞的时候 可以看做穿过 这样T之后哪些点有蚂蚁就知道了 就是不知道这个点的原点是哪个 可以把输入的点排序 因为相对顺序是不变的 就知道这个点原来是哪个了

    不知道为嘛一直交不对 重新打了一遍 就A了

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 
     7 using namespace std;
     8 struct node
     9 {
    10     int id,p,d;
    11 }before[10010],after[10010];
    12 char dir[][100] = {"L","Turning","R"};
    13 int order[10010];
    14 bool cmp(node a,node b)
    15 {
    16     return a.p<b.p;
    17 }
    18 int main()
    19 {
    20     int i,j,k,n,m,ll,t;
    21     char c;
    22     cin>>m;
    23     for(j = 1; j <= m ; j++)
    24     {
    25         cin>>ll>>t>>n;
    26         for(i = 0 ; i < n ; i++)
    27         {
    28             cin>>k>>c;
    29             int y = (c=='L'?-1:1);
    30             before[i] = (node){i,k,y};
    31             after[i] = (node){0,k+y*t,y};
    32         }
    33         sort(before,before+n,cmp);
    34         sort(after,after+n,cmp);
    35         printf("Case #%d:\n",j);
    36         for(i = 0 ; i < n ; i++)
    37         order[before[i].id] = i;
    38         for(i = 0 ; i < n-1 ; i++)
    39         if(after[i].p==after[i+1].p)
    40         after[i].d = after[i+1].d = 0;
    41         for(i = 0 ; i < n ; i++)
    42         {
    43             int a = order[i];
    44             if(after[a].p<0||after[a].p>ll)
    45             puts("Fell off");
    46             else
    47             printf("%d %s\n",after[a].p,dir[after[a].d+1]);
    48         }
    49         puts("");
    50     }
    51     return 0;
    52 }
  • 相关阅读:
    27-Perl 进程管理
    26-Perl 包和模块
    25-Perl CGI编程
    YUM极速安装mariadb
    yum极速安装mysql5.7
    切换阿里yum镜像源
    mysql生成随机字符串函数
    Unable to locate value meta plugin of type (id)
    centos 挂载NTFS移动硬盘
    总有你要的编程书单(GitHub )
  • 原文地址:https://www.cnblogs.com/shangyu/p/3039898.html
Copyright © 2020-2023  润新知