CodeForces - 1468F - Full Turn (向量)

简介: 笔记

Full Turn


题意

给你 n个人的位置和他们眼睛看的方向 这 n 个人同时开始顺时针旋转 360° 问 :在旋转过程中 有多少对人进行了眼神接触


思路

将 一个人的位置看成向量的起点 他看向的位置看成向量的终点 构造出一个向量然后对这个向量进行归一化


注意:不能将其标准化 即横纵坐标同时除以其长度 因为在 map 中 只要有一点误差就会被当作两个不同的数据 最终会导致我们得到的答案比正确答案少 为了避免这种情况发生 我们用 横纵坐标的gcd 对其进行归一化


一个人能在旋转中和别人进行眼神接触的数量为其对应的向量的负向量个数


代码

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
#define mod 1000000007
#define endl '\n'
using namespace std;
typedef  long long LL;
typedef pair<int, int>PII;
inline LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; }
const int N = 200010;
LL n;
void solve() {
  scanf("%lld", &n);
  LL res = 0;
  map<pair<double, double>, LL>mp;
  LL x, y, u, v;
  for (int i = 1; i <= n; ++i) {
    scanf("%lld%lld%lld%lld", &x, &y, &u, &v);
    LL a = (u - x);
    LL b = (v - y);
    LL g = gcd(abs(a), abs(b));
    a /= g;
    b /= g;
    //cout << "a == " << a << " " <<"b == " << b << endl;
    mp[{a, b}]++;
    res += mp[{-a, -b}];
  }
  printf("%lld\n", res);
}
int main() {
  int t; cin >> t;
  while(t--)
    solve();
  return 0;
}


目录
相关文章
|
前端开发 JavaScript API
Layui的CRUD(增删改查)
Layui的CRUD(增删改查)
274 0
|
13天前
|
编解码 人工智能 自然语言处理
牛B, 我去,新手小白也能使用InfiniteTalk搭建属于自己的数字人啦 ,真的太简单啦!!!
小华同学带你解锁AI高效工具!InfiniteTalk创新“稀疏帧配音”技术,实现口型、表情、身态协同演进,支持I2V/V2V双模式,确保长视频ID/背景稳定,流畅跨片段衔接,助力课程、宣传、电商等多场景降本增效。
264 6
|
存储 算法
细谈多重背包问题
细谈多重背包问题
细谈多重背包问题
|
调度 Android开发 开发者
构建高效Android应用:探究Kotlin多线程优化策略
【10月更文挑战第11天】本文探讨了如何在Kotlin中实现高效的多线程方案,特别是在Android应用开发中。通过介绍Kotlin协程的基础知识、异步数据加载的实际案例,以及合理使用不同调度器的方法,帮助开发者提升应用性能和用户体验。
211 4
|
存储 消息中间件 分布式计算
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
201 0
|
JSON Android开发 数据格式
Android App开发实战项目之仿喜马拉雅的听说书App实现(超详细 附源码和演示视频)
Android App开发实战项目之仿喜马拉雅的听说书App实现(超详细 附源码和演示视频)
420 2
|
网络协议 Linux 应用服务中间件
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
在发送数据包的过程中,不同层次的网络协议扮演着不同的角色。数据包在经过多层封装后,通过网络设备和路由器进行转发,并最终到达目标设备。在每个层次中,都会进行相应的处理和解封装,以确保数据包能够正确传输和被接收端处理。整个过程涉及到了物理层、数据链路层、网络层、传输层和应用层等多个层次的协议和设备。尽管在简化的示例中,发送数据包的过程相对简单,但实际情况中会更加复杂,需要通过路由表选择最佳路径来保证数据包的快速、高效传输。整个过程展示了网络分层结构的重要性和协同工作的复杂性。
650 0
数据包的奇妙旅程:揭秘网络传输的7个关键步骤
|
自然语言处理 数据管理
数据标准和数据规范到底有什么区别???
数据标准和数据规范到底有什么区别???
|
IDE 网络安全 开发工具
在PyCharm中连接云端资源进行代码调试
通过PyCharm ToolKit连接ModelArts,您可在PyCharm中便捷地使用云端计算资源进行代码开发。
782 0
在PyCharm中连接云端资源进行代码调试
|
SQL 数据库
SQL 多表联合查询的几种方式
SQL 多表联合查询的几种方式
SQL 多表联合查询的几种方式