2022.10.27每日一题
Daimayuan Online Judge-跳跳
题目描述
平面上给定了一些整点(横纵坐标均为整数的点),被称为 “魔法阵”。魔法少女派派想要在各魔法阵之间传送,每一次传送,她将使用下面的方式:
刚开始,派派已经位于某传送阵之上;
如果派派掌握一种魔法
选择一种魔法并开始传送,在一次传送过程中可以使用多次该魔法,但在抵达下一个传送阵之前仅能使用这一种魔法。
问派派至少需要掌握多少种魔法,才能在从任意魔法阵直接传送到任意魔法阵?
输入格式
第一行一个整数
接下来一行
输出格式
一个数,表示答案。
样例输入1
3
1 1
4 5
1 4
样例输出1
6
解释: 任务是从
注意你不能使用
当然,你可以学习
样例输入2
3
1 1
2 2
1000000000 1000000000
样例输出2
2
数据范围
解题思路
因为数据范围允许,所有我们以
C++代码
#include <bits/stdc++.h>
using namespace std;
const int N = 510;
typedef pair<int, int> PII;
#define x first
#define y second
int n;
PII q[N];
int gcd(int a, int b)
{
if(!b) return a;
else return gcd(b, a % b);
}
int main()
{
scanf("%d", &n);
for(int i = 1; i <= n; i ++)
scanf("%d%d", &q[i].x, &q[i].y);
set<PII> cnt;
for(int i = 1; i <= n; i ++)
for(int j = i + 1; j <= n; j ++)
{
int a = q[i].x - q[j].x, b = q[i].y - q[j].y;
int d = gcd(a, b);
cnt.insert({a / d, b / d});
cnt.insert({-a / d, -b / d});
}
printf("%d\n", cnt.size());
return 0;
}
本文来自博客园,作者:Cocoicobird,转载请注明原文链接:https://www.cnblogs.com/Cocoicobird/p/16831778.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现