建议改为 省 选 原 题

题意:求所有生成树的边权 \(\gcd\) 之和。

看到 \(\gcd\) 立刻想反演。

\[\sum_T\gcd_{e \in T}e_v
\]

这里设 \(E=e_v(e \in T)\)

\[\sum_T\gcd_E
\]
\[\sum_T\sum_{d \mid e(e \in E)}\varphi(d)
\]
\[\sum_{d=1}^{\infty}\sum_{T,T \in E(e_v \in E(d \mid e_v))}
\]

也就是说只需要求边权为 \(d\) 的倍数的边构成的图的生成树个数即可,使用矩阵树。

稍微剪枝一下,复杂度大概是 \(O(240mn^3+V\log V)\),实测可以通过。

#include<cstdio>
#include<vector>
typedef unsigned ui;
const ui M=1e6+5,mod=1e9+7;
ui n,m,mx,top,G[65][65],u[3005],v[3005],pos[M],pri[M],phi[M];std::vector<ui>id[M];
inline ui Add(const ui&a,const ui&b){
return a+b>=mod?a+b-mod:a+b;
}
inline ui Del(const ui&a,const ui&b){
return b>a?a-b+mod:a-b;
}
inline ui pow(ui a,ui b){
ui ans=1;
for(;b;b>>=1,a=1ull*a*a%mod)if(b&1)ans=1ull*ans*a%mod;
return ans;
}
inline ui Gauss(){
ui i,j,k,d,inv,ans(1);
for(i=1;i^n;++i){
if(!G[i][i])for(j=i+1;j^n;++j)if(G[j][i]){
ans=mod-ans;std::swap(G[i],G[j]);break;
}
inv=pow(G[i][i],mod-2);ans=1ull*ans*G[i][i]%mod;
for(j=i+1;j^n;++j)for(d=1ull*(mod-G[j][i])*inv%mod,k=i;k^n;++k)G[j][k]=(G[j][k]+1ull*d*G[i][k])%mod;
}
return ans;
}
inline ui Solve(const ui&x){
ui i,j;
for(i=1;i^n;++i)for(j=1;j^n;++j)G[i][j]=i^j?mod:0;
for(i=1;(j=i*x)<=mx;++i)for(ui&x:id[j])++G[u[x]][u[x]],++G[v[x]][v[x]],--G[u[x]][v[x]],--G[v[x]][u[x]];
return Gauss();
}
signed main(){
ui i,j,x,S,val,ans;
scanf("%u%u",&n,&m);
for(i=1;i<=n;++i)for(j=1;j<=n;++j)G[i][j]=i^j?mod:0;
for(i=1;i<=m;++i){
scanf("%u%u%u",u+i,v+i,&val);id[val].push_back(i);if(val>mx)mx=val;
++G[v[i]][v[i]];++G[u[i]][u[i]];--G[u[i]][v[i]];--G[v[i]][u[i]];
}
ans=Gauss();
for(i=2;i<=mx;++i){
if(!pos[i])pos[pri[++top]=i]=top,phi[i]=i-1;S=0;
for(j=1;(x=i*j)<=mx;++j)S+=id[x].size();if(S>=n-1)ans=(ans+1ull*phi[i]*Solve(i))%mod;
for(j=1;j<=pos[i]&&(x=i*pri[j])<=mx;++j)phi[x]=phi[i]*(pri[j]-((pos[x]=j)!=pos[i]));
}
printf("%u",ans);
}

LGP3790题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. 总结一下Mac快捷键的图形符号

    Mac中主要有四个修饰键,分别是Command,Control,Option和Shift.这四个键分别有自己的图案,他们经常出现在Mac应用程序中的菜单栏里,方便你随时学习新的快捷键.

  2. js Object.prototype.hasOwnProperty() 与 for in 区别

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 语法 obj.hasOwnProperty(prop) 参数 prop要检测的属性 [字符串] 名称或者 ...

  3. centOs编译安装php7.2支持微擎php扩展

    发现yum安装许多坑 于是只好编译安装 第一步得到镜像地址 在      https://www.php.net/downloads.php     有的地址比较慢,需要耐心等待 cd /usr/lo ...

  4. 网络层主要协议与arp欺骗

    网络层主要协议与arp欺骗 目录 网络层主要协议与arp欺骗 一.网络层(Network Layer) 1.网络层的功能 2.IP数据报(IP Datagram) 二.网络层的主要协议 1.ICMP协 ...

  5. Net6 DI源码分析Part3 CallSiteRuntimeResolver,CallSiteVisitor

    CallSiteRuntimeResolver CallSiteRuntimeResolver是实现了CallSiteVisitor之一. 提供的方法主要分三个部分 自有成员方法 Resolve提供服 ...

  6. apt安装zabbix

    下面介绍基于ubuntu18.04,使用apt在ubuntu安装zabbix 4.0.x版本.规划在10.0.0.101主机安装zabbix server,在10.0.0.104安装提供msyql服务 ...

  7. Ubuntu - root, sudo, su, passwd

    1.rootubuntu中默认是不使用root账户的,当然也是可以开启并设置为默认登录账户的,但ubuntu不建议使用而已,毕竟root账户拥有所有权限,可能会出现一些误操作之类.在普通账户中,如果遇 ...

  8. Solution -「LOJ #6029」「雅礼集训 2017」市场

    \(\mathcal{Description}\)   Link.   维护序列 \(\lang a_n\rang\),支持 \(q\) 次如下操作: 区间加法: 区间下取整除法: 区间求最小值: 区 ...

  9. Solution -「AGC 026D」Histogram Coloring

    \(\mathcal{Description}\)   Link.   有 \(n\) 列下底对齐的方格纸排成一行,第 \(i\) 列有 \(h_i\) 个方格.将每个方格染成黑色或白色,求使得任意完 ...

  10. 公式编辑器CVE-2018-0798样本分析

      当前样本是一个RTF文档,内嵌一个公式编辑器对象,该对象利用Office编辑器漏洞CVE-2018-0798执行shellcode,对EQNEDT32.exe进行代码注入,执行恶意代码.   使用 ...