博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #478 (Div. 2) D Ghosts 会超时的判断两个之间关系,可以用map
阅读量:4613 次
发布时间:2019-06-09

本文共 949 字,大约阅读时间需要 3 分钟。

给出起始坐标(x,y)要充分利用题目条件,最好全都列出来

运动方向(Vx,Vy)

很容易得到判断两个是否相碰

(gho[a].y-gho[b].y)*1.0/(gho[a].vy-gho[b].vy)==(gho[a].x-gho[b].x)*1.0/(gho[a].vx-gho[b].vx)

但是每一个都判断双重循环肯定超时

不要忘了题目为什么给定初始位置在一条直线上,而不是任意位置,肯定是为了化简上面式子!

所以最后化得 vyiavxi=vyjav

所以用map 存储,看有没有符合的

同时要减去平行的那些

转自https://www.cnblogs.com/ZhenghangHu/p/8982277.html

include
#include
#define ll long long#define MAXN 200000using namespace std;ll n,a,b,ans,parallel;map
m;map< pair
,int> p;int main(){ cin>>n>>a>>b; for(int i=1;i<=n;i++){ int x,Vx,Vy; scanf("%d%d%d",&x,&Vx,&Vy); //每个维护出来a*Vx-Vy ll key = a*Vx-Vy; ans+=m[key];//相同key的能collide m[a*Vx-Vy]++; parallel+=p[ make_pair(Vx,Vy) ];//同是1,2 就是平行,一个1,2 一个2,4 虽然方向平行,但是可能反方向的,会可能相碰,他们vy-a*vx不相等所以不用考虑 p[ make_pair(Vx,Vy) ]++; } cout<<(ans-parallel)*2; return 0; }

转载于:https://www.cnblogs.com/LandingGuy/p/9280208.html

你可能感兴趣的文章
node express框架基本配置
查看>>
深入理解MySQL的ACID四大特性原理
查看>>
Codeforces Round #463 F. Escape Through Leaf (李超线段树合并)
查看>>
@ResponseBody 注解是什么意思?
查看>>
Code4App地址
查看>>
蓄水池抽样
查看>>
C#与数据库访问技术总结(十五)之 DataAdapter对象代码示例
查看>>
Sublime Text 插件推荐——for web developers
查看>>
Grails中service的线程安全的小例子
查看>>
MySQL与Oracle(二)---日期对比(MySQL)
查看>>
懵懂的第一周
查看>>
OpenFileDialog对话框Filter属性
查看>>
树链剖分
查看>>
poj2886线段树(单点修改,区间查询)
查看>>
通过JazzyViewPager来实现Fragment页面间的动画切效果
查看>>
golang map和for循环的查找效率对比
查看>>
struts2中服务器端数据校验
查看>>
form表单里的坑
查看>>
Vs2010+opencv2.3.1 imread出现异常
查看>>
Restful --- 让JSON回归单纯
查看>>