codeforces 848B Rooter's Song
正解:排序+模拟。
我们注意到两个点碰撞的必要条件,$pi+tj=pj+ti$,移项以后发现就是$pi-ti=pj-tj$,那么我们可以把$p-t$相同的点分为同一组。
然后我们还可以发现一点,就是无论两个点怎样碰撞,原来被覆盖的路径都是不会改变的。然后我们再观察一下样例的那张图。

可以发现,一个点最后是横向还是纵向与它碰撞的横向点和纵向点的数量大小关系有关。
以一个纵向点为例,如果与它一组的横坐标在它后面的纵向点数量$>=$所有和它一组的横向点数量,那么它就会变成横向点,否则就会变成一个纵向点。
于是我们对于每一个组按照横坐标和纵坐标来排序,就可以直接根据上述条件来判断一个点最终的位置,具体细节可以看一下代码。
#include <bits/stdc++.h>
#define il inline
#define RG register
#define ll long long
#define mp make_pair
#define x first
#define y second
#define N (200005) using namespace std; vector<pair<int,int> >vec[][N];
pair<int,int> ans[N]; int n,w,h; il int gi(){
RG int x=,q=; RG char ch=getchar();
while ((ch<'' || ch>'') && ch!='-') ch=getchar();
if (ch=='-') q=-,ch=getchar();
while (ch>='' && ch<='') x=x*+ch-,ch=getchar();
return q*x;
} int main(){
#ifndef ONLINE_JUDGE
freopen("song.in","r",stdin);
freopen("song.out","w",stdout);
#endif
n=gi(),w=gi(),h=gi();
for (RG int i=,op,p,t;i<=n;++i){
op=gi()-,p=gi(),t=gi();
vec[op][p-t+].push_back(make_pair(p,i));
}
for (RG int i=,sz1,sz2;i<=;++i){
sort(vec[][i].begin(),vec[][i].end());
sort(vec[][i].begin(),vec[][i].end());
sz1=vec[][i].size(),sz2=vec[][i].size();
for (RG int j=;j<sz1;++j)
if (sz1-j->=sz2) ans[vec[][i][j].y]=mp(vec[][i][j+sz2].x,h);
else ans[vec[][i][j].y]=mp(w,vec[][i][sz1-j-].x);
for (RG int j=;j<sz2;++j)
if (sz2-j->=sz1) ans[vec[][i][j].y]=mp(w,vec[][i][j+sz1].x);
else ans[vec[][i][j].y]=mp(vec[][i][sz2-j-].x,h);
}
for (RG int i=;i<=n;++i) printf("%d %d\n",ans[i].x,ans[i].y); return ;
}
codeforces 848B Rooter's Song的更多相关文章
- codeforces 848B Rooter's Song 思维题
http://codeforces.com/problemset/problem/848/B 给定一个二维坐标系,点从横轴或纵轴垂直于发射的坐标轴射入(0,0)-(w,h)的矩形空间.给出点发射的坐标 ...
- Codeforces 848B Rooter's Song(分类+模拟)
题目链接 Rooter's Song 题意 有n个舞者站在x轴上或y轴上,每个人有不同的出发时间.x轴上的舞者垂直x轴正方向移动,y轴上的舞者垂直y轴正方向移动. 当x轴的舞者和y轴的舞者相遇时,他 ...
- codeforces 848B - Rooter's Song(构造+几何)
原题链接:http://codeforces.com/problemset/problem/848/B 题意:好多个人分别从x,y轴不同位置不同时间往垂直坐标轴方向移动,一旦相遇他们转向,问所有人的到 ...
- [CodeForces - 848B] Rooter's Song 思维 找规律
大致题意: 有一个W*H的长方形,有n个人,分别站在X轴或Y轴,并沿直线向对面走,第i个人在ti的时刻出发,如果第i个人与第j个人相撞了 那么则交换两个人的运动方向,直到走到长方形边界停止,问最后每个 ...
- Codeforces 849D.Rooter's Song
D. Rooter's Song time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...
- 【Codeforces】849D. Rooter's Song
[算法]模拟 [题意]http://codeforces.com/contest/849/problem/D 给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置.(还 ...
- 【推导】【分类讨论】Codeforces Round #431 (Div. 1) B. Rooter's Song
给你一个这样的图,那些点是舞者,他们每个人会在原地待ti时间之后,以每秒1m的速度向前移动,到边界以后停止.只不过有时候会碰撞,碰撞之后的转向是这样哒: 让你输出每个人的停止位置坐标. ①将x轴上初始 ...
- python爬虫学习(5) —— 扒一下codeforces题面
上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...
- 【Codeforces 738D】Sea Battle(贪心)
http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...
随机推荐
- bat下执行java程序报错处理
G:\>java -Xms128M -Xmx512M -server -Dprogram.name=b omc-sa-tdtpagent -Dfile.encoding=GBK -Duser.t ...
- Firebird Procedure 带返回的存储过程
火鸟定义带返回的存储过程是这样,先定义返回结果字段列表,然后为返回字段一一赋值,当你需要返回一行时,就suspend. 当需要返回多行时,就再次为返回字段变量赋值,suspend. 示例: creat ...
- [转]error MSB4018: The "GenerateResource" task failed unexpectedly
本文转自:https://github.com/Microsoft/msbuild/issues/364 After uninstall Visual Studio 2015 Update 1 RC ...
- C#实体对象序列化成Json,格式化,并让字段的首字母小写
解决办法有两种:第一种:使用对象的字段属性设置JsonProperty来实现(不推荐,因为需要手动的修改每个字段的属性) public class UserInfo { [JsonProperty(& ...
- js 递归树结构数据查找父级
1.json树数据查找所有父级--完成 json:树结构数据 var arrData = [{ "label": "中国", "City": ...
- (C++学习)关于CString的一些疑问
#include <iostream> #include <string> #include <afx.h> #include <vector> usi ...
- 学习笔记2_Day09_servlet的细节
Servlet细节 l 不要在Servlet中创建成员!创建局部变量即可! l 可以创建无状态成员! l 可以创建有状态的成员,但状态必须为只读的! 1 Servlet与线程安全 因为一个类型的 ...
- 深入理解jQuery插件开发总结(二)
1,开始 可以通过为jQuery.fn增加一个新的函数来编写jQuery插件.属性的名字就是你的插件的名字: jQuery.fn.myPlugin = function(){ //开始写你的代码吧! ...
- 数组之reduce()和reduceRight()
1.reduce()和reduceRight()方法使用指定的函数将数组元素进行组合,生成单个值. reduce()可以传入两个参数,第一个是执行化简操作的函数.同样这个函数可以有参数,第一个参数代表 ...
- Python入门-内置函数一
什么是内置函数?就是python给你提供的拿来直接用的函数,比如print,input等等,截止到python版本3.6.2 python一共提供了68个内置函数,他们就是python直接提供给我们的 ...