uva 10881 - Piotr's Ants

阅读更多

题目链接:

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1822


关键思路:

是UVa 10714 - Ants的加强版本

关键在于理解,不管走多久,蚂蚁的相对顺序都是不变的,还有两只蚂蚁相碰之后,看起来就和“穿过去”一样。

而最终每只蚂蚁的方向,就和每只蚂蚁按照原来方向一直走T秒之后,这时候从左到右每只蚂蚁的方向,就是初始时从左到右的每只蚂蚁T秒后的方向。



代码:

#include
#include
#include
#include
#include
using namespace std;

const int maxn = 10000+10;
int L, T, n;

struct node{
    int len;
    int dir;
    int id;
    int rank;
    friend bool operator<(const node&a,const node&b){
        return a.len < b.len;
    }
}arr[maxn];

struct Rank{
    int len;
    int dir;
    friend bool operator < (const Rank&a,const Rank&b){
        return a.len < b.len;
    }
}tmp[maxn];

char new_dir[maxn];

mapmp;

bool cmp(const node&a,const node&b){
    return a.id < b.id;
}


int main(){

    int nCase, cas=1;
    char ch[2];

    scanf("%d", &nCase);

    while(nCase--){
        scanf("%d%d%d",&L, &T, &n);

        for(int i=0; i L) 
                puts("Fell off");
            else if(mp[arr[i].len] > 1)
                printf("%d Turning\n", arr[i].len);
            else
                printf("%d %c\n", arr[i].len, new_dir[arr[i].rank]);
        }
        puts("");
    }

    return 0;
}




你可能感兴趣的:(uva 10881 - Piotr's Ants)