UVa 10881
来源:互联网 发布:大学生网络诈骗图片 编辑:程序博客网 时间:2024/06/02 10:40
题目:有一些蚂蚁在一根棍子上爬行,每个蚂蚁有一个初始位置和方向,如果蚂蚁相撞则掉头,
蚂蚁的速度为1,问时间T后,各个蚂蚁的位置和方向。
分析:模拟。如果蚂蚁没有区别,那么相撞可以忽略,认为各自继续前行。
因为有上面的结论,在考虑编号的时候,只要在运动后,按照初始的顺序给予编号即可;
首先,计算初始时每个蚂蚁的位置顺序编号记录在id中;
然后,无视碰撞计算每个蚂蚁的位置,计算T时刻的每个蚂蚁的位置顺序记录在order中;
最后,按照输入顺序查询输出,用T时刻第id[i]]的蚂蚁,替换初始第i只蚂蚁的位置方向;
说明:有点绕,(⊙v⊙)。
#include <stdio.h>#include <stdlib.h>#include <string.h>int order[10001];int id[10001];int now[10001];char dir[10001];int cmp(const void *a, const void *b){return now[*(int *)a] - now[*(int *)b];}int main(){int c, L, T, n;while (~scanf("%d",&c)) {for (int t = 1; t <= c; ++ t) {scanf("%d%d%d",&L,&T,&n);for (int i = 0; i < n; ++ i) {scanf("%d %c",&now[i],&dir[i]);order[i] = i;}qsort(order, n, sizeof(int), cmp);for (int i = 0; i < n; ++ i) {id[order[i]] = i;}for (int i = 0; i < n; ++ i) {order[i] = i;if (dir[i] == 'L') {now[i] -= T;}else {now[i] += T;}}qsort(order, n, sizeof(int), cmp);printf("Case #%d:\n",t);for (int i = 0; i < n; ++ i) {int index = id[i];if (now[order[index]] < 0 || now[order[index]] > L) {puts("Fell off");}else {printf("%d ",now[order[index]]);if (index > 0 && now[order[index-1]] == now[order[index]] || index < n-1 && now[order[index+1]] == now[order[index]]) {puts("Turning");}else {printf("%c\n",dir[order[index]]);}}}puts("");}}return 0;}
阅读全文
0 0
- uva 10881
- UVA 10881
- uva 10881
- uva 10881
- UVA 10881
- uva 10881
- UVa 10881
- UVA 10881
- UVa 10881
- [UVA] 10881
- UVA 10881
- UVa 10881
- Uva 10881 蚂蚁
- poj 1852 && uva 10881
- uva 10881 Piotr'sAnts
- Uva 10881蚂蚁
- uva 10881(贪心)
- uva 10881 蚂蚁
- BZOJ3261最大异或和(可持久化字典树)
- 各大公司广泛使用的在线学习算法FTRL详解
- javascript 基础知识小总结
- Python-序列化model为json
- JAVA实现二维数组中的查找(《剑指offer》)
- UVa 10881
- linux vi编辑器操作手册
- 个税税率表2017
- MongoDB相关文章索引(1)
- Tensorflow手写数字识别在android中的实现
- phpstorm License Server激活
- 获取积分
- 图片加载库的封装
- 用java实现操作系统的前趋图