首页 > 其他分享 >2022.10.27每日一题

2022.10.27每日一题

时间:2022-10-27 12:11:50浏览次数:84  
标签:27 int 每日 魔法 样例 魔法阵 传送 使用 2022.10

Daimayuan Online Judge-跳跳

题目描述

平面上给定了一些整点(横纵坐标均为整数的点),被称为 “魔法阵”。魔法少女派派想要在各魔法阵之间传送,每一次传送,她将使用下面的方式:
刚开始,派派已经位于某传送阵之上;
如果派派掌握一种魔法 \((A,B)\),其中 \(A,B\) 均为整数。使用一次这个魔法可以让派派从任意整点 \((X,Y)\) 瞬间移动至 \((X+A,Y+B)\);
选择一种魔法并开始传送,在一次传送过程中可以使用多次该魔法,但在抵达下一个传送阵之前仅能使用这一种魔法
问派派至少需要掌握多少种魔法,才能在从任意魔法阵直接传送到任意魔法阵?

输入格式

第一行一个整数 \(N\)。
接下来一行 \(N\) 行,每行包含两个整数 \(X_i,Y_i\), 表示每个魔法阵的坐标。

输出格式

一个数,表示答案。

样例输入1
3
1 1
4 5
1 4
样例输出1
6

解释: 任务是从 \((1,1)\) 传送至 \((4,5)\) 以及 \((1,4)\)、从 \((4,5)\) 传送至 \((1,1)\) 以及 \((1,4)\)、从 \((1,4)\) 传送至 \((1,1)\) 以及 \((4,5)\)。
注意你不能使用 \((0,3)+(3,1)\) 的魔法从 \((1,1)\) 到达 \((4,5)\)。因为每次移动,你只能使用一种魔法。
当然,你可以学习 \((0,1)\),那样的话,从 \((1,1)\) 到达 \((1,4)\) 则需要使用 \(3\) 次 \((0,1)\) 魔法了。

样例输入2
3
1 1
2 2
1000000000 1000000000
样例输出2
2
数据范围

\(N\in[10,500]\)
\(X_i,Y_i∈[0,10^9]\), 但保证坐标之间两两不同

解题思路

因为数据范围允许,所有我们以 \(O(n^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;
}

标签:27,int,每日,魔法,样例,魔法阵,传送,使用,2022.10
From: https://www.cnblogs.com/Cocoicobird/p/16831778.html

相关文章

  • 2022年10月27日
      人生中的很多路,都要自己去走,很多人都靠不住,凡事靠自己才能顺顺利利,勤勉才是真理!  毕淑敏说:生活就是泥沙俱下,鲜花与荆棘并存。  这一路走过来不容易,跌跌撞......
  • 每日算法4:去除数组中重复的元素,判断回文数/字符串
    去除数组中重复的元素题目描述:去除数组中重复的元素解题思路:因为对象中的键是唯一的,利用对象筛选数组中重复的部分,创建新数组存放不重复的元素因为对象中的键是唯一......
  • 代码随想录算法训练营带三期第一天 | 704. 二分查找,27. 移除元素
    第一天打卡,从C++,python往java和go的方向转变。一刷leetcode以前学过的算法都不记得了,错了好几次看了官方文档才改过来的。 第二题非常难懂具体是什么意思我还在空间......
  • 代码随想录算法训练营第一天|704、二分查找|27、移除元素
    704.二分查找·这是三个数的故事left,middle,right题目链接:https://leetcode.cn/problems/binary-search/前提:数组有序  小->大   数组无重复数   使用语......
  • 模板整理(2022.10)
    模板整理(2022.10)1.线性筛素数boolis_prime[100000005];//是否为素数intprime[100005],cnt;//素数数组,cnt:素数个数voidget_prime(intmaxn){ memset(is_prime,1......
  • 2022.10.26
    没有联考,明天的考试大概是最后一次了。把所有字符串的板子打了一遍,还算比较熟练。写了一道300+行的大模拟,非常恶心磨人,码力还是需要加强,写+调用了5h。300行代码静态差错......
  • 【2022.10.26】Vue基础学习(3)
    内容概要1.表单控制2.购物车案例3.v-model进阶4.vue生命周期1表单控制#input:checkbox(单选,多选),radio(单选)<!DOCTYPEhtml><htmllang="en"><head><meta......
  • 【闲话】2022.10.26
    今天属实他妈破防离谱死了傻逼吧整个人晚上心情就没好过酒店网是什么寄吧啊啊?我问你,啊?这也就罢了怎么有网的时候我的一直卡,隔壁Sakura那么快这合理吗?最后他妈的......
  • 13 刘欣晨 2022.10.20 第七章实例+实战
    实验 一 项目名称:     创建大雁类并定义飞行方法classGeese:'''大雁类'''def__init__(self,beak,wing,claw):print("我是大......
  • 每日一结
    862.和至少为K的最短子数组求出一个数组,sum[i]=前i个数字之和;和至少为k,最简单的是两层遍历;为了时间快一些,可以采用栈来存放下标;for(inti=0;i<=n;i++){lo......