【Codeforces】849D. Rooter's Song
【算法】模拟
【题意】http://codeforces.com/contest/849/problem/D
给定n个点从x轴或y轴的位置p时间t出发,相遇后按对方路径走,问每个数字撞到墙的位置。(还是乖乖啃原题意去吧233)
【题解】
两个数会相撞,当且仅当xi+tj=xj+ti,即xi-ti=xj-tj。令di=xi-ti,则只有di相同的一堆数会相撞。
观察相撞规律,容易发现处理方式。处理出一堆相同的数字后,x从大到小再y从小到大放入A,y从小到大再x从大到小放入B,然后A对应从B中取位置。
给所有的y+500000就可以是y自然排在x后面,也方便判断x轴和y轴。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=,H=,G=;
struct cyc{int x,num,id;}a[maxn];
int n,x1,x2,tot,A[maxn],B[maxn],ans[maxn],anss[maxn]; bool cmp(cyc a,cyc b){return a.num<b.num||(a.num==b.num&&a.x<b.x);}
int main(){
scanf("%d%d%d",&n,&x1,&x2);
int u,v,w;
for(int i=;i<=n;i++){
scanf("%d%d%d",&u,&v,&w);
a[i]=(cyc){v+(u-)*H,v-w,i};
}
sort(a+,a+n+,cmp);
int l=,m=,r=;
a[n+].num=0x3f3f3f3f;
for(int i=;i<=n;i++){
if(a[i].x<G)m=i;else r=i;
if(a[i].num!=a[i+].num){
tot=;
for(int j=m;j>=l;j--)A[++tot]=j;
for(int j=m+;j<=r;j++)A[++tot]=j;
tot=;
for(int j=m+;j<=r;j++)B[++tot]=j;
for(int j=m;j>=l;j--)B[++tot]=j;
for(int j=;j<=tot;j++)ans[A[j]]=B[j];
l=i+,m=i,r=i;
}
}
for(int i=;i<=n;i++)anss[a[i].id]=a[ans[i]].x;
for(int i=;i<=n;i++){
if(anss[i]>G)printf("%d %d\n",x1,anss[i]-H);
else printf("%d %d\n",anss[i],x2);
}
return ;
}
【Codeforces】849D. Rooter's Song的更多相关文章
- 【Codeforces】Round #491 (Div. 2) 总结
[Codeforces]Round #491 (Div. 2) 总结 这次尴尬了,D题fst,E没有做出来.... 不过还好,rating只掉了30,总体来说比较不稳,下次加油 A:If at fir ...
- 【Codeforces】Round #488 (Div. 2) 总结
[Codeforces]Round #488 (Div. 2) 总结 比较僵硬的一场,还是手速不够,但是作为正式成为竞赛生的第一场比赛还是比较圆满的,起码没有FST,A掉ABCD,总排82,怒涨rat ...
- 【codeforces】【比赛题解】#849 CF Round #431 (Div.2)
cf的比赛越来越有难度了……至少我做起来是这样. 先看看题目吧:点我. 这次比赛是北京时间21:35开始的,算是比较良心. [A]奇数与结束 "奇数从哪里开始,又在哪里结束?梦想从何处起航, ...
- 【CodeForces】601 D. Acyclic Organic Compounds
[题目]D. Acyclic Organic Compounds [题意]给定一棵带点权树,每个点有一个字符,定义一个结点的字符串数为往下延伸能得到的不重复字符串数,求min(点权+字符串数),n&l ...
- 【CodeForces】983 E. NN country 树上倍增+二维数点
[题目]E. NN country [题意]给定n个点的树和m条链,q次询问一条链(a,b)最少被多少条给定的链覆盖.\(n,m,q \leq 2*10^5\). [算法]树上倍增+二维数点(树状数组 ...
- 【CodeForces】925 C.Big Secret 异或
[题目]C.Big Secret [题意]给定数组b,求重排列b数组使其前缀异或和数组a单调递增.\(n \leq 10^5,1 \leq b_i \leq 2^{60}\). [算法]异或 为了拆位 ...
- 【CodeForces】700 D. Huffman Coding on Segment 哈夫曼树+莫队+分块
[题目]D. Huffman Coding on Segment [题意]给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长.1<=n,m,ai<=10^5. [算法]哈夫曼树+莫 ...
- 【CodeForces】906 D. Power Tower 扩展欧拉定理
[题目]D. Power Tower [题意]给定长度为n的正整数序列和模数m,q次询问区间[l,r]累乘幂%m的答案.n,q<=10^5,m,ai<=10^9. [算法]扩展欧拉定理 [ ...
- 【CodeForces】741 D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths(dsu on tree)
[题意]给定n个点的树,每条边有一个小写字母a~v,求每棵子树内的最长回文路径,回文路径定义为路径上所有字母存在一种排列为回文串.n<=5*10^5. [算法]dsu on tree [题解]这 ...
随机推荐
- 根据生产场景对Linux系统进行分区
转自:http://oldboy.blog.51cto.com/2561410/629558 老鸟谈生产场景如何对linux系统进行分区? █ 前言: 我们买房子时,会考虑1室1厅,2室1厅, ...
- 问题:docker pull 用户登陆tricky,Error response from daemon: unauthorized: incorrect username or password
问题描述: PS C:\WINDOWS\system32> docker pull rabbitmqUsing default tag: latest Please login prior to ...
- ACE Reactor 源码解析
http://blogs.readthedocs.org/ ACE的学习笔记,根据源码分析了Reactor模型的实现. 因为笔记编写技术限制,这里仅列出主要目录,如有可能可以抽空复制到该Blog中 ...
- Django admin源码剖析
单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...
- quartz 使用总结
quartz是一个任务调度框架,具体的用途比如说,我想我的程序在每天的3点干什么事,每隔多长时间做一件什么事.quartz框架就可以完美地解决这些. 1.xml配置方式 首先我是用spring来管理的 ...
- Qt 实现在隐藏标题栏情况下,窗口的缩放(未成功)
呃,这是一个悲剧的版本,在这版本中,我按照网上大神的说法,试了一下,但是没有效果,不知道出错在了那里,和昨天一样,也是,没有理想的效果,这里贴上代码,记录一下 资料连接:放评论 需要包含头文件 #in ...
- Qt 实现脉搏检测-1-心跳曲线部分
最新的想法就是写一个显示脉搏的东西,主要就是通过串口读取硬件(检测心跳的)传来的数据,在显示一下. 先实现画心跳曲线 如下图 先来电干货, 首先,在这个代码中,第一次用到了list这个东东 所以,关于 ...
- [USACO18DEC]Fine Dining
题面 \(Solution:\) 一开始想的是先跑一遍最短路,然后拆点之后再跑一遍,比较两次dis,然后发现拆点后会有负环(可能是我没想对拆点的方法),于是就放弃了拆点法. 我们考虑强制让每头牛选择走 ...
- Java语言课程设计
一.项目简介 本实验是对图形用户界面,布局管理器的综合应用,理解Java的处理机制,编写独立运行的窗口 二.项目采用技术 GUI,JAVA 三.功能需求分析 1.使用用户图形界面 2.能够实现年月份的 ...
- .aspx文件和.aspx.cs文件的区别与联系
http://zhidao.baidu.com/link?url=_SNw0EHJ8Wg__KanJrKQM3tVEUeFnVilZ6GGIN8ab69RLuyOWD__WyZb7Zb9dJjwDnL ...