蚂蚁--模拟
来源:互联网 发布:智联招聘 java开发 编辑:程序博客网 时间:2024/05/17 06:22
一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置。
输入格式:
输入的第一行为数据组数。每组数据的第一行为3个正整数L、T、n(0<=n<=10000);以下n行每行描述一只蚂蚁的初始位置,其中,整数x为蚂蚁距离木棍左端的距离(单位:厘米),字母表示初始朝向(L表示朝左,R表示朝右)。
输出格式:
对于每组数据,输出n行,按输入顺序输出每只蚂蚁的位置和朝向(Turing表示正在碰撞)。在第T秒之前已经掉下木棍的蚂蚁(正好爬到木棍边缘的不算)输出Fell off。
样例输入:
2
10 1 4
1 R
5 R
3 L
10 R
10 2 3
4 R
5 L
8 R
样例输出:
Case #1:
2 Turing
6 R
2 Turing
Fell off
Case #2:
3 L
6 R
10 R
解:
- #include<cstdio>
- #include<algorithm>
- using namespace std;
- const int maxn = 10000+5;
- const char dirName[][10] = {"L", "Turing", "R"};
- int order[maxn]; //输入的第i只蚂蚁是终态中的左数第order[i]只蚂蚁
- struct Ant
- {
- int id; //输入顺序
- int p; //位置
- int d; //朝向。-1:左;0:转身中;1:右
- bool operator < (const Ant &a) const
- {
- return p < a.p;
- }
- }before[maxn], after[maxn];
- int main()
- {
- int K;
- scanf("%d", &K);
- for(int ki = 1; ki <= K; ki++)
- {
- int L, T, n;
- scanf("%d%d%d", &L, &T, &n);
- for(int i = 0; i < n; i++)
- {
- int p, d;
- char c;
- scanf("%d %c", &p, &c);
- d = (c=='L') ? -1 : 1;
- before[i].id = i; before[i].p = p; before[i].d = d;
- after[i].id = 0; after[i].p = p+T*d; after[i].d = d; //此处id还是未知的,用0代替
- }
- //计算次序数组
- sort(before, before+n);
- for(i = 0; i < n; i++)
- order[before[i].id] = i;
- //计算终态,保持原态或其它态
- sort(after, after+n);
- for(i = 0; i < n-1; i++)
- if(after[i].p == after[i+1].p) after[i].d = after[i+1].d = 0;
- //输出结果
- printf("Case #%d:\n", ki);
- for(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].d+1]);
- }
- printf("\n");
- }
- return 0;
- }
0 0
- 蚂蚁--模拟
- uva10881(蚂蚁模拟)
- 兰顿蚂蚁(模拟)
- 【普及模拟】蚂蚁
- HPU1289 兰顿蚂蚁 【模拟】
- 蓝桥杯 蚂蚁感冒 不要模拟!
- 模拟-兰顿蚂蚁-水
- NYOJ 990 蚂蚁感冒(模拟)
- jzoj P1508【普及模拟】蚂蚁
- 蓝桥杯-兰顿蚂蚁 (模拟)
- JZOJ__Day 7:【普及模拟】蚂蚁
- 51 nod 1266蚂蚁 模拟
- 模拟 [ZJOI2008]杀蚂蚁antbuster
- 大模拟 猪国杀 杀蚂蚁
- [模拟](JZOJ)【普及模拟】蚂蚁
- UVA 10714 Ants 蚂蚁 贪心+模拟 水题
- 蓝桥杯 PREV-27 蚂蚁感冒 模拟
- 蓝桥杯 历届试题 兰顿蚂蚁 【模拟】
- JSTL 核心标签库 使用
- php设计模式之命令链模式
- 黑马程序员—java基础_File类
- VS2008常用快捷键
- drawable 与 bitmap 互转
- 蚂蚁--模拟
- 您应该知道的UNIX工具之lsof
- code hunt 题解二(java版)
- HTM中的TComPicYuv和TVideoIOYuv类(一)
- C/C++刁钻问题各个击破之细说sizeof
- 【leetcode】Isomorphic Strings
- php设计模式之策略模式
- 软件项目估算之代码行估算方法
- Cassandra in Spring