CodeForces #589 D Boulevard 模拟
来源:互联网 发布:苹果手机短信备份软件 编辑:程序博客网 时间:2024/06/04 19:34
题目描述:
Description
Welcoming autumn evening is the best for walking along the boulevard and n people decided to do so.
The boulevard can be represented as the axis Ox. For every person there are three parameters characterizing the behavior: ti, si, fi — the moment of time when the i-th person starts walking, the start point and the end point of the walk respectively. Each person moves in a straight line along the boulevard from si to fi with a constant speed of either 1 or - 1 depending on the direction.
When the i-th person appears on the boulevard at the point si she immediately starts walking towards the point fi.
If two or more persons meet at the boulevard (they are at the same point at the same time, no matter which directions they are going) they all greet each other. Like in the normal life, every pair of people greet each other at most once.
You task is to calculate for every person how many people she greets while walking along the boulevard.
Please, pay attention to the fact that i-th person may meet and greet any other person at points si and fi. After a person achieves the destination point fi she moves out of the boulevard and cannot greet anyone else. The same rule applies to the start of the walk: a person cannot greet anyone until she appears on the boulevard.
Input
In the first line there is an integer n(2 ≤ n ≤ 1000) — the number of people who decided to go for a walk.
The following n lines contain parameters for n people. In the i-th line there are three positive integers ti, si, fi(1 ≤ ti, si, fi ≤ 106, si ≠ fi), where ti, si, fi — the moment of time when the i-th person starts walking, the start point and the end point of the walk respectively.
Output
The single line of the output should contain a sequence of n integers r1, r2, …, rn separated by a space, where ri denotes the number which the i-th person greets other people while walking along the boulevard.
Sample Input
Input
31 1 105 8 29 9 10
Output
2 1 1
Input
33 2 44 3 43 6 4
Output
2 2 2
题目分析:
有n个人,分别在时间ti的时候从si出发,走向ei。每个人在走的过程中会遇到别的人,将他们遇到别人的个数分别输出。
模拟。
代码如下:
#include <iostream>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;struct node{ int s,e; int t;} p[1010];int n;int ans[1010];bool judge(int a,int b,int c,int d)//两人同方向时,时间是否能重合{ if(c<=a && b<=d) return 1; if(a<=c && c<=b) return 1; if(a<=d && d<=b) return 1; return 0;}int main(){ while(scanf("%d",&n)!=-1) { memset(ans,0,sizeof(ans)); for(int i=1; i<=n; i++) { scanf("%d%d%d",&p[i].t,&p[i].s,&p[i].e); } for(int i=1; i<=n; i++) { for(int j=i+1; j<=n; j++) { if (p[i].s<=p[i].e && p[j].s<=p[j].e)//从左向右 { if(p[i].s-p[i].t==p[j].s-p[j].t && judge(p[i].t,p[i].t+p[i].e-p[i].s,p[j].t,p[j].t+p[j].e-p[j].s)) ans[i]++,ans[j]++; } if (p[i].s<=p[i].e && p[j].s>p[j].e)//从左向右和从右向左 { double t=p[i].t-p[i].s+p[j].t+p[j].s; t/=2;//两人相遇点 if(t>=p[i].t && t<=p[i].t+p[i].e-p[i].s && t>=p[j].t && t<=p[j].t+p[j].s-p[j].e) ans[i]++,ans[j]++; } if (p[i].s>p[i].e && p[j].s<=p[j].e)//从右向左和从左向右 { double t=p[i].t+p[i].s+p[j].t-p[j].s; t/=2;//两人相遇点 if(t>=p[j].t && t<=p[j].t+p[j].e-p[j].s && t>=p[i].t && t<=p[i].t+p[i].s-p[i].e) ans[i]++,ans[j]++; } if (p[i].s>p[i].e && p[j].s>p[j].e)//从右向左 { if(p[i].s+p[i].t==p[j].s+p[j].t && judge(p[i].t,p[i].t+p[i].s-p[i].e,p[j].t,p[j].t+p[j].s-p[j].e)) ans[i]++,ans[j]++; } } } printf("%d",ans[1]); for(int i=2; i<=n; i++) { printf(" %d",ans[i]); } printf("\n"); } return 0;}
- CodeForces #589 D Boulevard 模拟
- CodeForces 589D Boulevard
- Codeforces 589D Boulevard 线段相交
- codeforce 589 D. Boulevard
- CodeForces 589D --- D. Boulevard (数学题目--枚举分类讨论)
- CodeForces 589D Boulevard (一维区间判断相交 非线段交做法)
- codeforces 157D 模拟
- Codeforces 637D 模拟
- Codeforces 665D 模拟
- Codeforces 669D 模拟
- Codeforces 863D 模拟
- 【2015-2016 ACM-ICPC, NEERC, Southern Subregional Contest D】【模拟 讨论】Boulevard 人流行走看是否相交 beautiful code
- codeforces 676D (bfs 模拟)
- codeforces 375D dfs+模拟
- codeforces 732D 模拟暴力
- codeforces 864D 模拟 + 贪心
- Codeforces 30D King's Problem? 模拟
- Codeforces 520D. Cubes 贪心模拟
- Java基于jxl与模板导出excel并弹出下载
- Maven类包冲突终极解决小技若干
- 0-1背包
- 合并排序
- 对学生管理系统的心得
- CodeForces #589 D Boulevard 模拟
- redis del命令支持正则删除(pattern)
- 剑指offer(三十一)之孩子们的游戏(圆圈中最后剩下的数)
- 第十三周项目三 分数类中的运算符重载 (2)
- poj之旅——3181
- HDU 2151 worm
- BSG挑战赛
- Uva11054——Wine trading in Gergovia
- python 进行文本相似性对比