uva 10881 - Piotr's Ants(排序)
来源:互联网 发布:辐射4 ui优化 编辑:程序博客网 时间:2024/04/30 20:02
题目链接:10881 - Piotr's Ants
题目大意:在一个长为L的木棒上有n只蚂蚁,给出蚂蚁的初始位置以及方向,问说移动T秒后各个蚂蚁的位置以及状态,如果两只蚂蚁在移动的过程中相撞,则会同时掉头。
解题思路:问题只要解决说两只蚂蚁相撞的情况就差不多了,其实从整体上来看(不考虑蚂蚁的编号),“相撞”和对穿而过“是一样的,只不过移动到那个位置的蚂蚁并不是先前的那只。所以说只要记录下每只蚂蚁的顺序,它是不会因为移动而跳到另外一只的前面。
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;const int N = 10005;const char dirName[][10] = { "L", "Turning", "R" };struct Ant {int id;int p;int dir;bool operator < (const Ant& c) const {return p < c.p;}}before[N], after[N];int L, T, n, order[N];void input() {scanf("%d%d%d", &L, &T, &n);int d;char ch;for (int i = 0; i < n; i++) {scanf("%d %c", &before[i].p, &ch);before[i].id = i;d = after[i].dir = before[i].dir = (ch == 'L')? -1: 1;after[i].p = before[i].p + T * d;}}void solve() {memset(order, 0, sizeof(order));sort(before, before + n);for (int i = 0; i < n; i++)order[before[i].id] = i;sort(after, after + n);for (int i = 1; i < n; i++)if (after[i - 1].p == after[i].p) after[i - 1].dir = after[i].dir = 0;}void output() {for (int i = 0; i < n; i++) {int a = order[i];if (after[a].p < 0 || after[a].p > L) printf("Fell off\n");else printf("%d %s\n", after[a].p, dirName[after[a].dir + 1]);}printf("\n");}int main () {int cas;scanf("%d", &cas);for (int i = 1; i <= cas; i++) {input();solve();printf("Case #%d:\n", i);output();}return 0;}
- uva 10881 - Piotr's Ants(排序)
- UVa 10881 Piotr's Ants (排序)
- uva - 10881 - Piotr's Ants(等效变换,排序)
- uva 10881 Piotr's Ants (模拟)
- UVa - 10881 - Piotr's Ants
- uva 10881 - Piotr's Ants
- Uva-10881-Piotr's Ants
- uva 10881 - Piotr's Ants
- UVa 10881 Piotr's Ants
- UVA 10881 Piotr's Ants
- Piotr's ants UVA 10881
- UVa 10881 - Piotr's Ants
- UVa 10881 Piotr's Ants
- UVA - 10881 Piotr's Ants
- uva 10881 Piotr's Ants
- UVA - 10881 Piotr's Ants
- UVa 10881 - Piotr's Ants
- UVa 10881 - Piotr's Ants
- 【数组】14周项目六(3)去掉str中的空格存放在str中(自己for版)
- OpenStack
- c++支持课打印若干个字母(A-N)
- 成绩处理之(一)输入成绩
- -D_REENTRANT 宏作用
- uva 10881 - Piotr's Ants(排序)
- eCos系统CPU负载测量
- 浮点数的比较
- 山东理工大学ACM平台题答案 1230 平方和与立方和
- 练习赛14.2.潜水艇
- vim编辑中用到的一些常用命令
- installshield 2009 无法通过installscript写注册表
- OpenCV iOS - Image Processing¶
- 安卓 traceview的使用