UVa10881 Piotr's Ants (思维)

链接:http://acm.hust.edu.cn/vjudge/problem/25979分析:n只蚂蚁在爬,将n只蚂蚁距离木棍左端的距离从小到大排序后它们的相对顺序是不变的,因为碰到另一只蚂蚁两只蚂蚁就会掉头,蚂蚁就像一个弹珠来回弹,但整体上“掉头”等价于“对穿而过”,但题目要求输入时的顺序输出,所以并不是所有蚂蚁都是一样的,还要认清谁是谁,所以如果蚂蚁1初始状态为(3,R)两秒后在(5,R)的位置会出现一只蚂蚁但不一定是蚂蚁1,但是可以肯定(5,R)位置上的蚂蚁相对于其它蚂蚁的顺序和初始状态时的相对顺序是一样的,所以把初始状态和T秒后的状态按pos从小到大排序,将输入顺序映射到初始状态的相对顺序上,按初始相对顺序(等于最终相对顺序)取出after中T秒后的各个蚂蚁的状态,还要处理好碰撞的情况,最后打印输出就好了。
 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4
 5 const int maxn = 10000 + 5;
 6
 7 struct Ant {
 8     int id, pos, dir;
 9     bool operator < (const Ant& rhs) const {
10         return pos < rhs.pos;
11     }
12 } before[maxn], after[maxn];
13
14 const char dirName[3][10] = {"L", "Turning", "R"};
15 int order[maxn];
16
17 int main() {
18     int T;
19     scanf("%d", &T);
20     for (int kase = 1; kase <= T; kase++) {
21         int L, t, n;
22         scanf("%d%d%d", &L, &t, &n);
23         for (int i = 0; i < n; i++) {
24             char ch; int x, d; scanf("%d %c", &x, &ch); d = (ch == ‘L‘ ? -1 : 1);
25             before[i].id = i, before[i].pos = x, before[i].dir = d;
26             after[i].id = 0, after[i].pos = x + t * d, after[i].dir = d;
27         }
28         sort(before, before + n);
29         for (int i = 0; i < n; i++)
30             order[before[i].id] = i;
31         sort(after, after + n);
32         for (int i = 0; i < n - 1; i++)
33             if (after[i].pos == after[i + 1].pos) after[i].dir = after[i + 1].dir = 0;
34         printf("Case #%d:\n", kase);
35         for (int i = 0; i < n; i++) {
36             int num = order[i];
37             if (after[num].pos < 0 || after[num].pos > L) printf("Fell off\n");
38             else printf("%d %s\n", after[num].pos, dirName[after[num].dir + 1]);
39         }
40         printf("\n");
41     }
42     return 0;
43 }

UVa10881 Piotr's Ants (思维)

时间: 2024-10-28 10:43:29

UVa10881 Piotr's Ants (思维)的相关文章

UVA10881 Piotr&#39;s Ants

Piotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome ournew insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a horizontalpol

UVA-10881 - Piotr&#39;s Ants

Piotr's Ants Time Limit: 2 seconds "One thing is for certain: there is no stopping them; the ants will soon be here. And I, for one, welcome our new insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a horizontal

Uva---10881 Piotr&#39;s Ants(蚂蚁)

Problem DPiotr's AntsTime Limit: 2 seconds "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome ournew insect overlords." Kent Brockman Piotr likes playing with ants. He has n of them on a hori

UVA 10881 - Piotr&#39;s Ants【模拟+思维】

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1822 题意:有很多只蚂蚁在一条直线上,每个蚂蚁移动速度都是1,并且有一个初始方向.并且当相邻两个蚂蚁相撞时转向.现在问t时间后各个蚂蚁的位置. 解法:这题的一个致命技巧就是把两只蚂蚁的相撞看作是两只蚂蚁交换穿过对方并且交换蚂蚁的编号.这个是很好理解的,类似于物理的完全弹性碰撞.又由

UVA 10881 Piotr&#39;s Ants(模拟)

题目链接:https://vjudge.net/problem/UVA-10881 其实这道题的关键只有一句话: 当两个蚂蚁因碰撞而掉头的时候,我们完全可以认为是两个点对穿而过. 这时候我们的主要任务就是弄清楚“谁是谁”. 然而很明显每只蚂蚁的相对顺序是不变的,所以我们要记录一个$order$数组. 预处理出它的初始状态和order,同时算出走之后的状态. 注意程序中的有些地方处理的很巧妙. AC代码: 1 #include<cstdio> 2 #include<iostream>

uva 10881 Piotr&#39;s Ants 解题报告

题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&page=show_problem&problem=1822 题目意思:有一条 L 厘米长的杆,上面有 n 只蚂蚁,给出每只蚂蚁的朝向以及离杆上最左端的距离,问 T 秒之后每只蚂蚁到达的位置,如果 T 秒后某个位置有多只蚂蚁同时到达,那么这堆蚂蚁处于的位置 + Turning,如果超过这条杆的长度,输出F

UVa 10881 Piotr&#39;s Ants (等价变换)

题意:一个长度为L的木棍上有n个蚂蚁,每只蚂蚁要么向左,要么向右,速度为1,当两只蚂蚁相撞时, 它们同时掉头.给定每只蚂蚁初始位置和朝向,问T秒后,每只蚂蚁的状态. 析:刚看到这个题时,一点思路也没有,怎么做啊,难道又要模拟么,一想,模拟...天呐,好麻烦! 最终还是看了一下题解.真是很巧妙哪. 首先是当两个蚂蚁相撞时,转向和不转向是看不出来的.也就是说掉头等价于对穿而过.也就是说, 如果把蚂蚁看成是没有区别的小点,那么只要独立算每只蚂蚁的位置即可.虽然是这么说,但是, 对每只蚂蚁却不是这样,但

【UVa 10881】Piotr&#39;s Ants

Piotr's Ants Porsition:Uva 10881 白书P9 中文改编题:[T^T][FJUT]第二届新生赛真S题地震了 "One thing is for certain: there is no stopping them;the ants will soon be here. And I, for one, welcome our new insect overlords."Kent Brockman Piotr likes playing with ants. H

uva 10881 Piotr&#39;s Ants (模拟)

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, welcome our new insect overlords."Kent Brockman Piotr likes playing with ants. He has n of them on a horizontal pole L cm lo