移动的点
移动的点
二维平面中有 个点。
每个点都在做着匀速运动,其中第 个点在 轴上的速度为 ,在 轴上的速度为 。
这些点从很久之前( 时刻)就存在,在无限的未来( 时刻)也将存在,并且会一直保持着它们的运动。
每个点都拥有一个属性值 ,它记录了该点自诞生到现在与其他点相遇的次数,每当该点与其他点在某时某刻相遇,该值就会增加 ,关于该属性值,需注意:
- 如果同一时刻同一地点,一个点与多个点相遇,则每个与它相遇的点都会使其 值增加 。
- 两个点发生相遇时,它们的 值都会增加。
由于每个点的运动速度都是恒定的,所以每个点的 值都会在某一时刻达到最大值,并且以后不会再发生变化。
也就是说,不妨设 个点的 值之和为 ,即 ,在某一时刻后, 值也将达到最大值并不再增加。
十分巧合的是这 个点会在某个时刻排列在同一条直线 上,每个点在该时刻的具体位置已知。
请你根据这些信息,计算 的最大值。
请注意,所有点的运动并不是从共线那一时刻开始的,所以在发生共线之前, 的值可能已经大于 了。
输入格式
第一行包含三个整数 。
接下来 行,每行包含三个整数 ,其中 表示第 个点在发生共线时所在位置的 坐标(由此信息以及之前给定的 和 的值,即可计算出其所在位置的 坐标)。
保证在发生共线时,这 个点不存在重合,也就是说输入满足对于所有 ,如果 ,则 。
输出格式
输出一个整数,表示 的最大值。
数据范围
前三个测试点满足 。
所有测试点满足 ,,,。
输入样例1:
4 1 1 1 -1 -1 2 1 1 3 1 1 4 -1 -1
输出样例1:
8
输入样例2:
3 1 0 -1 1 0 0 0 -1 1 -1 -2
输出样例2:
6
输入样例3:
3 1 0 0 0 0 1 0 0 2 0 0
输出样例3:
0
解题思路
当全部点都在直线上时,任取两点坐标分别为和。假设这两个点在时刻相遇,进行正交分解,此时横纵坐标相同,即
约去变量,有
因为题目保证任意两点的横坐标不同,即,因此约去分子得到。记,因此如果两个点能够相遇,那么就有。因此可以开个哈希表统计每个点的,如果某个有个,意味着这个点的每个点都与其余的个点发生碰撞,这个点的总碰撞次数为。当然还要考虑到如果两个点的相对速度为,即有,那么此时仍然成立,但显然这两个点是不会发生相遇的,因此我们还需要开个哈希表来统计每个点的。如果某个有序对出现了次,在之前的哈希表我们对这个点统计了次,因为这个点的相对速度相同不可能相遇,因此需要减去之前统计的次。
AC代码如下:
1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 typedef pair<int, int> PII; 6 7 int main() { 8 int n, a, b; 9 scanf("%d %d %d", &n, &a, &b); 10 11 unordered_map<LL, int> mp1; // 统计wi 12 map<PII, int> mp2; // 统计(Vxi, Vyi) 13 14 while (n--) { 15 int x, vx, vy; 16 scanf("%d %d %d", &x, &vx, &vy); 17 mp1[vy - 1ll * a * vx]++; 18 mp2[{vx, vy}]++; 19 } 20 21 LL ret = 0; 22 for (auto &it : mp1) { 23 ret += it.second * (it.second - 1ll); 24 } 25 for (auto &it : mp2) { // 减去相对速度为0的点 26 ret -= it.second * (it.second - 1ll); 27 } 28 printf("%lld", ret); 29 30 return 0; 31 }
参考资料
AcWing杯 - 第64场周赛:https://www.bilibili.com/video/BV1vY4y1c74i?spm_id_from=333.337.search-card.all.click
本文来自博客园,作者:onlyblues,转载请注明原文链接:https://www.cnblogs.com/onlyblues/p/16586682.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效