jzoj5888
tj:暴力連邊會tle
我們發現所有邊的邊權最大值不超過100000,這意味著可以設計和邊權有關的算法,假設現在邊權不相同
枚舉一個現在的邊權i,代表gcd為i,設連的2個點權值為a1∗ia1*ia1∗i和a2∗ia2*ia2∗i,當且僅當a1與a2互質時,gcd值為i
這樣子可以將a1∗ia1*ia1∗i和a2∗ia2*ia2∗i連起來,但是還是太慢
我們可以考慮將所有邊由i連向2∗i2*i2∗i,3∗i3*i3∗i…,得到的新圖與原圖等價
因為我們這一輪只能在2∗i2*i2∗i,3∗i3*i3∗i…中連邊,而以前我們只會連接a1與a2互質的邊,由於i的前面一項為1,與2,3,…互質,所以之前連的邊現在還會連,並且會使iii,2∗i2*i2∗i,3∗i3*i3∗i…聯通
這樣子我們得到了一個邊數為(max(a[i])lnmax(a[i]))(max(a[i])lnmax(a[i]))(max(a[i])lnmax(a[i]))的新圖。貪心連邊,從max(a[i])循環至1即可
注意,我們需要判權值相等的點,這些點沒有考慮到,需要全部加上這些點的權值
代碼:
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,a[2000010],p[2000010],mn,bk[2000010];
ll find(ll x){return p[x]==x?x:p[x]=find(p[x]);}
int main(){
freopen("gcd.in","r",stdin);
freopen("gcd.out","w",stdout);
scanf("%lld",&n);
ll ans=0;
for(ll i=1;i<=n;i++){
p[i]=i;
scanf("%lld",&a[i]);
if(!bk[a[i]])bk[a[i]]=i;
else ans+=a[i];
mn=max(mn,a[i]);
}
for(ll i=mn;i>=1;i--){
ll las=0;
for(ll j=1;j*i<=mn;j++)if(bk[j*i]){
ll xx=find(bk[j*i]);
if(!las)las=xx;
else{
if(las==xx)continue;
ans+=i;
p[xx]=las;
}
}
}
printf("%lld\n",ans);
}
jzoj5888的更多相关文章
- [JZOJ5888]GCD生成树
[JZOJ5888]GCD生成树 题目链接 gugugu 分析 对于N很小的情况,暴力Prim即可 对于值域很小的情况,我的想法与solution不太一样,将值相同的缩成一个点,\(O(w^2)\)预 ...
- NOIP前的刷题记录
因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数 组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...
随机推荐
- QT中 使用c++调用python
最近在做一个项目,开发环境用的是QT c++.项目中使用amazon云服务,调研发现有一个Amazon云的python接口.就有了标题中的问题,需要用C++来调用python脚本. 下面是一个c++调 ...
- linux 下安装gult
本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.不要怕,它其实很简单,我会分为五步向你介绍gulp并帮助你完成一些惊人的事情.那就直接开始吧. 第一步 ...
- Codeforces 703B. Mishka and trip 模拟
B. Mishka and trip time limit per test:1 second memory limit per test:256 megabytes input:standard i ...
- npm 如何设置镜像站为淘宝网
转载 2015年06月24日 17:12:12 10542 淘宝镜像:http://npm.taobao.org/ 镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候 ...
- abp 的坑
多数据库连接问题 viewmodel的验证问题 发布后,一段查找sln查找代码无法适用生产环境问题 多语言问题,默认中文设置与模板配置文件不统一
- springmvc 整合shiro
1.引用maven <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro ...
- MYSQL 问题小总结
mysql 问题小总结 1.MySQL远程连接ERROR 2003(HY000):Can't connect to MySQL server on ‘ip’(111)的问题 通常是mysql配置文件中 ...
- 2018.08.29 NOIP模拟 table(拓扑排序+建图优化)
[描述] 给出一个表格,N 行 M 列,每个格子有一个整数,有些格子是空的.现在需要你 来做出一些调整,使得每行都是非降序的.这个调整只能是整列的移动. [输入] 第一行两个正整数 N 和 M. 接下 ...
- 2018.07.12 atcoder Go Home(贪心)
传送门 题意简述:大家在数轴上生活,公司在 s. 班车送所有人回家,有 n 个住处,第 i 个位置在 xi,居住了 pi 的人. 保证 xi 互不相同. 大家⼀起投票向前还是向后,如果票数相同就固定向 ...
- jedis 链接池使用(转)
Jedis作为redis的最佳客户端,它提供了连接池的特性,“连接池”在通常情况下可以有效的提高应用的通信能力,并且这是一种良好的设计模式.Jedis的连接池设计基于apache commons-po ...