Minimum spanning tree HDU - 6954
Minimum spanning tree HDU - 6954
题意:
给定n-1个点,编号从2到n,两点a和b之间的边权重为lcm(a,b)。请找出它们形成的最小生成树。
2<=n<=10000000
题解:
这题一看就眼熟。。。这不是去年的CCPC网络赛吗,当时就差这个题进区域赛,CCPC里面数据范围是n<=10 ^10 , 这个是10 ^7,前者用min25筛做,后者直接用欧拉筛就可以
HDU 6889 Graph Theory Class(CCPC网络赛)
代码:
min25筛做法
min25筛模板出处
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1000010;typedef long long ll;ll qpow(ll a, ll b)
{ll ans = 1;while(b){if(b & 1)ans = ans * a;a = a * a ;b /= 2;}return ans;
}ll prime[N], id1[N], id2[N], flag[N], ncnt, m;ll g[N], sum[N], a[N], T, n;inline ll ID(ll x)
{return x <= T ? id1[x] : id2[n / x];
}inline ll calc(ll x)
{return x * (x + 1) / 2 - 1;
}inline ll f(ll x)
{return x;
}inline void init()
{ncnt = m = 0;T = sqrt(n + 0.5);for (ll i = 2; i <= T; i++){if (!flag[i])prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + i;for (ll j = 1; j <= ncnt && i * prime[j] <= T; j++){flag[i * prime[j]] = 1;if (i % prime[j] == 0)break;}}for (ll l = 1; l <= n; l = n / (n / l) + 1){a[++m] = n / l;if (a[m] <= T)id1[a[m]] = m;elseid2[n / a[m]] = m;g[m] = calc(a[m]);}for (ll i = 1; i <= ncnt; i++)for (ll j = 1; j <= m && (ll)prime[i] * prime[i] <= a[j]; j++)g[j] = g[j] - (ll)prime[i] * (g[ID(a[j] / prime[i])] - sum[i - 1]);
}inline ll solve(ll x)
{if (x <= 1)return x;return n = x, init(), g[ID(n)];
}int main()
{ll n, t;scanf("%lld", &t);while(t--) {scanf("%lld", &n);n--;ll ans = (solve(n + 1) - 2 );//质数和 ll tmp = ((n + 4) * (n-1) ) /2;printf("%lld\n", (ans + tmp) );}
}
欧拉筛做法:
Minimum spanning tree HDU - 6954相关推荐
- Directed Minimum Spanning Tree: Chu-Liu/Edmonds Algorithm
我们的现代数据库大作业要求实现一个图查询系统,包括基于属性的子图查询.可达性查询(可选).最短路径查询(可选).TopK最短路径查询(可选).图形化展示(可选)等功能.分成子图同构查询小组以及可达性及 ...
- 《Boost》Part1 Minimum Spanning Tree
<Boost>Part1 Minimum Spanning Tree 1.Boost中的最小生成树介绍 MST最小生成树,是图论中的基本算法,还有一种是最大生成树,此处暂不介绍. 最小生成 ...
- 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树
知识点 树是没有环的图 在树中,任意顶点r和顶点v之间必然存在着1条路径 生成树:拥有图G的所有顶点,并且在保证自身是树的前提下拥有尽量多的边. 最小生成树(MST):个边权值总和最小的生成树 普里姆 ...
- HDU 4408 Minimum Spanning Tree 最小生成树计数
http://acm.hdu.edu.cn/showproblem.php?pid=4408 题意:求最小生成树个数 题解:对于Kruskal算法,我们发现,最小生成树要想用多种方法就要有长度相同的边 ...
- hdu 4408 Minimum Spanning Tree
题目连接:点击打开链接 解法:利用kruskal算法 把图划分成森林, 同一点有相同最小的权值到别的点, 通过determinant计算树的课数. 总结:模板 + 自己不太懂 = 记录 + 重新学 代 ...
- HDU 4408 - Minimum Spanning Tree(最小生成树计数)
有边权的最小生成树计数 模板 #pragma comment(linker, "/STACK:1024000000,1024000000") #include <iostre ...
- CodeForces - 609E Minimum spanning tree for each edge(最小生成树+树链剖分+线段树/树上倍增)
题目链接:点击查看 题目大意:给出一张 n 个点和 m 条边组成的无向图,现在询问包含每一条边的最小生成树 题目分析:考虑求解次小生成树的思路: 求出最小生成树 ans 枚举每一条非树边 ( u , ...
- 最小生成树(MST,minimum spanning tree)
生成树:由图生成的树,由图转化为树,进一步可用对树的相关操作来对图进行操作.最小指的是权值最小: 生成树是边的集合,如下图所示的最小生成树:MST={{a,b},{a,f},{f,c}}\text{M ...
- 百度之星2018资格赛t6三原色图(MST minimum spanning tree)
ac代码: #include<bits/stdc++.h> #define per(i,a,b) for(int i=a;i<=b;i++) using namespace std; ...
最新文章
- linux kernel devel和kernel source的区别
- hdu6165(拓扑排序+tarjan缩点)
- python中文注释缩进_Python入门学习之注释、行与缩进
- 使用flink Table Sql api来构建批量和流式应用(1)Table的基本概念
- Android:CheckBox控件
- mysql无法连接server 2008_SQL Server 2008登录错误:无法连接到(local)解决方法
- 阿里云熊鹰:基于融合、协同系统的边缘云原生架构演进和实践
- Linux IPC实践(9) --System V共享内存
- /etc/securetty文件
- 【译】图上的深度学习综述 五、图自编码器
- android循环请求数据,android – Camera2 ImageReader冻结重复捕获请求
- 流量限制器(Flux Limiter)
- HTML期末网页设计——设计报告
- 【Python脚本进阶】2.4、conficker蠕虫(上):Metasploit攻击Windows SMB服务
- 手机内存带宽和分辨率
- win10在哪打开ie浏览器?windows11怎么打开ie浏览器?
- python 杨辉三角居中打印_利用python打印杨辉三角
- Microsoft.NET Framework 3.5Service Pack1下载Windows功能失败原因
- 解密QQ号(stl库)
- 20-40K/月,百度车联网招聘多岗位Android工程师(地点:深圳)
热门文章
- mysql xa 演示_mysql的XA事务恢复过程详解
- 父类可以调用子类的方法吗_python类的继承、多继承及查找方法顺序
- 在google play开放平台上closed texting如何删除_“爷青回”!如何抢先体验《英雄联盟》手游?这份攻略送给你...
- php实现电脑自动关机,用批处理实现电脑自动关机
- 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯
- android.mk ndk编译选项优化,Android NDK 编译脚本分析 之一
- mysql如何和qt连接使用_Qt5学习:连接MySQL数据库
- c语言计算文件摘要值,c语言文件操作摘要.ppt
- python的基础知识可以应用到哪方面-Python基础知识
- [mybatis]Configuration XML_databaseidProvider