190227模拟

题目描述

给定一张 N 个点的有向图,点 i 到点 j 有一条长度为 i/gcd(i,j) 的边.

有个 Q 询问,每个询问包含两个数 x, y,求从点 x 出发到点 y 的最短距离。

输入格式

第一行包含两个用空格隔开的整数 N Q。

接下来 Q 行,每行两个整数 x 和 y。

输出格式

输出 Q 行整数,表示从点 x 出发到点 y 的最短距离。

提示与说明

对于30%的数据,1≤N≤100。

对于70%的数据,1≤N≤10^5。

对于100%的数据,1≤x,y≤N≤10^7, Q≤ 10^5。

虽然是求最短路,但这显然是一道数论题。

通过打表找规律,发现答案就是(x/gcd(x,y))的质因数之和。

筛质数的时候,每次把它被整除的最小质因数记下来....反正看代码吧

有个写了个√n的dalao的写法我也不懂,反正我一个一个质数枚举都会t

代码如下

#include<cstdio>
#include<iostream>
#define MogeKo qwq
using namespace std;
const int maxn = 1e7+;
int prime[maxn],p[maxn];
int n,q,x,y,cnt;
bool vis[maxn]; int gcd(int a,int b) {
if(b==)return a;
return gcd(b,a%b);
} int solve(int x) {
int sum = ;
while(x!=) {
sum += p[x];
x /= p[x];
}
return sum;
} void Prime(int N) {
for(int i=; i <= N; i++) {
if(!vis[i]) {
prime[++cnt]=i;
p[i] = i;
}
for(int j=; j<=cnt && prime[j]*i <= N; j++) {
vis[prime[j]*i] = true;
p[prime[j]*i] = prime[j];
if(i%prime[j]==)break;
}
}
} int main() {
scanf("%d%d",&n,&q);
Prime(n);
while(q--) {
scanf("%d%d",&x,&y);
if(x==y) {
printf("0\n");
continue;
}
x /= gcd(x,y);
int ans = solve(x);
if(!ans)ans = ;
printf("%d\n",ans);
}
return ;
}

模拟Prime写崩了QAQQQQ(无能狂怒)

19/3/30

我突然想起来这个好像可以用欧拉函数来做...

不用求素数表,直接根据唯一分解定理从2到n枚举就行了?不知道对不对

int euler(int n){
int sum = ;
for(int i = ;i*i <= n;i++)
while(n%i==){
sum += i;
n /= i;
}
if(n>) sum += n;
return sum;
}

[intoj#7]最短距离的更多相关文章

  1. 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离

    /// <summary> /// 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离 /// </summary> /// <param name ...

  2. [ACM_几何] The Deadly Olympic Returns!!! (空间相对运动之最短距离)

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=28235#problem/B 题目大意: 有两个同时再空间中匀速运动的导弹,告诉一个时间以 ...

  3. 求DAG上两点的最短距离

    Problem 给出一个不带边权(即边权为1)的有向无环图(unweighted DAG)以及DAG上两点s, t,求s到t的最短距离,如果无法从s走到t,则输出-1. Solution DFS,BF ...

  4. HDU 2083 简易版之最短距离 --- 水题

    HDU 2083 简易版之最短距离 /* HDU 2083 简易版之最短距离 */ #include <cstdio> #include <algorithm> using n ...

  5. codeforces 590C C. Three States(bfs+连通块之间的最短距离)

    题目链接: C. Three States time limit per test 5 seconds memory limit per test 512 megabytes input standa ...

  6. hdoj 2083 简易版之最短距离

    简易版之最短距离 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. [LeetCode]Word Ladder 最短距离字符串转换 (Dijkstra)

    要求最短距离.采纳dijkstra查找节点之间的最短路径. 当心:假设是一个枚举字典22是否元素可以,如果转换,暂停. 提高:每串,带您历数它的字符值事件,对于的长度n一个字符串枚举n*26次要. 设 ...

  8. 计蒜客模拟赛D1T2 蒜头君的树:树上节点之间最短距离和

    题目链接:https://nanti.jisuanke.com/t/16446 题意: 给你一棵有n个节点的树以及每条边的长度,输出树上节点之间的最短距离和.然后进行m次操作,每次操作更改一条边的长度 ...

  9. P2453 [SDOI2006]最短距离

    题目描述 一种EDIT字母编辑器,它的功能是可以通过不同的变换操作可以把一个源串X [l..m]变换为新的目标串y[1..n].EDIT提供的变换操作有: 源串中的单个字符可被删除(delete): ...

随机推荐

  1. centos 安装mysql Package: akonadi-mysql-1.9.2-4.el7.x86_64 (@anaconda)

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release ...

  2. js判断当前内容是否为空

    function isValue(o) { return (this.isObject(o) || this.isString(o) || this.isNumber(o) || this.isBoo ...

  3. java方法中,传参是传值还是传址问题(对比C语言、C#和C++)

    问题引出: 编写一个简单的交换值的小程序,如果我们只是简单地定义一个交换函数接收两个数,在函数内部定义一个中间变量完成交换.那么当我们把a,b两个实参传给这个函数时,往往得不到预期的结果.这是为什么呢 ...

  4. Wampserver或者帝国CMS安装后, 打开localhost显示IIS欢迎界面图片

    我们在安装集成环境Wampserver或者帝国CMS之后,有时会遇到一个问题, 打开localhost显示一张IIS欢迎界面图片,这个问题该如何解决呢,我在这里简单整理了一下解决方法 电脑win10系 ...

  5. A problem has been detected and windows has been shut down to prevent damage to your computer.他么啥意思?看这里!【蓝屏】

    A problem has been detected and windows has been shut down to prevent damage to your computer.  检测到问 ...

  6. java笔记--对信号量Semaphore的理解与运用

    java Semaphore 信号量的使用: 在java中,提供了信号量Semaphore的支持. Semaphore类是一个计数信号量,必须由获取它的线程释放, 通常用于限制可以访问某些资源(物理或 ...

  7. 高性能JavaScript模板引擎 artTemplate

    下载地址 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <ti ...

  8. 用好lua+unity,让性能飞起来——lua与c#交互篇

    前言 在看了uwa之前发布的<Unity项目常见Lua解决方案性能比较>,决定动手写一篇关于lua+unity方案的性能优化文. 整合lua是目前最强大的unity热更新方案,毕竟这是唯一 ...

  9. 基于PHP的颜色生成器

    <?php  function randomColor()  {      $str = '#';      for($i = 0 ; $i < 6 ; $i++)     {      ...

  10. GitHub-创建仓库与本地同步

    1. 在Linux上安装Git [root@mini05 ~]# yum install -y git ……………… 2. 本地创建ssh-key信息 [root@mini05 ~]# ssh-key ...