uva 10881 模拟题
来源:互联网 发布:2015年淘宝双十一交易额 编辑:程序博客网 时间:2024/06/05 19:05
题意:
给出一根L长的棒子,上面有n个蚂蚁,给出他们的走的方向和位置,问 t 时间后这些蚂蚁的位置
题解:
这里主要要理解蚂蚁相对位置不变,并且我们可以转化为,两个蚂蚁碰头后蚂蚁依然走自己的路,不会改变方向,只是交换了他们的序号而已
所以记录一下他们的初始位置,然后走自己的路后排一下序,相对位置还是和前面一样
#include<math.h>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define MAXN 10005struct node{ int x,num; char ch[10];};node a[MAXN];int order[MAXN];int cmp(node k1,node k2){ return k1.x<k2.x;}int main(){ int T; int l,t,n; int cases=1; freopen("in.txt","r",stdin); scanf("%d",&T); while(T--) { scanf("%d%d%d",&l,&t,&n); for(int i=1;i<=n;i++){ a[i].num=i; scanf("%d%s",&a[i].x,a[i].ch); } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) order[a[i].num]=i; for(int i=1;i<=n;i++) if(a[i].ch[0]=='R') a[i].x+=t; else a[i].x-=t; sort(a+1,a+1+n,cmp); for(int i=1;i<n;i++){ if(a[i].x==a[i+1].x){ strcpy(a[i].ch,"Turning"); strcpy(a[i+1].ch,"Turning"); } } printf("Case #%d:\n",cases++); for(int i=1;i<=n;i++){ if(a[order[i]].x>l||a[order[i]].x<0) puts("Fell off"); else printf("%d %s\n",a[order[i]].x,a[order[i]].ch); } puts(""); } return 0;}
阅读全文
0 0
- uva 10881 模拟题
- UVA 10196 模拟题。。
- uva 227 模拟题
- UVA 220 Othello 模拟题
- uva 1589 Xiangqi 模拟题
- 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(经典模拟,trick点)
- UVA 573 Steps 简单模拟题
- (1.1.8)UVA 10120 Gift?!(模拟题)
- UVA 575(模拟大水题)
- UVA-133 双向链表模拟题
- UVa 127 线性表模拟题
- UVA 621 Secret Research 水题模拟
- UVa 1587 有趣的模拟题
- 04.多方法交换x与y的值
- [LeetCode]141. Linked List Cycle
- CleanMyMac 3 优惠券代码 折扣劵 coupon -OFF 40%
- 07.inline的作用
- 跨进程操作Sqlite数据库
- uva 10881 模拟题
- ffmpeg+opencv实现视频画中画
- Grafana ALert功能使用webhook,并预警数据信息
- github博客主题 hexo-theme-yilia
- [转载] Java中 package 分析
- 前端学习-CSS-02
- HDU 6106 Classes 【】
- 一个简易的只在网页上注册信息的方法
- org.hibernate.LazyInitializationException:(hibernate开发问题记录)