[CF809E] Surprise me!
先要推式子
\[ \begin{aligned} \varphi(x)\varphi(y)&=(x\prod_{p|x}\frac{p-1}p)(y\prod_{p|y}\frac{p-1}p)\\ &=(\prod_{p|xy}\frac{p-1}p)(\prod_{p|\gcd(x,y)}\frac{p-1}p)xy\\ &=\varphi(xy)\varphi(\gcd(x,y))xy \end{aligned} \\\Rightarrow \varphi(xy)=\frac{\varphi(x)\varphi(y)\gcd(x,y)}{\varphi(\gcd(x,y))}\\ \]
接着堆式子
\[ \begin{aligned} ans&=\sum_i\sum_{i}\varphi(a_ia_j)dis(i,j)\\ &=\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_i\sum_j\varphi(a_i)\varphi(a_j)dis(i,j)[\gcd(a_i,a_j)=d] \\ f(d)&=\sum_i\sum_j...[\gcd(a_i,a_j)=d] \\ g(d)&=\sum_{d|x}f(x)\\ &=\sum_i\sum_j...[d|\gcd(a_i,a_j)]\\ &=\sum_{d|a_i}\sum_{d|a_j}\varphi(a_i)\varphi(a_j)(dep_i+dep_j-2dep_{lca(i,j)})\\ &=\sum_{d|a_i}\varphi(a_i)\sum_{d|a_j}\varphi(a_j)(dep_i+dep_j-2dep_{lca(i,j)})\\ &=2\sum_{d|a_i}\varphi(a_i)dep_i\sum_{d|a_j}\varphi(a_j)-2\sum_{d|a_i}\varphi(a_i)\sum_{d|a_j}\varphi(a_j)*dep_{lca(i,j)} \\ f(d)&=\sum_{d|x}\mu(\frac{x}d)g(x)=\sum_{i=1}^{\lfloor\frac{n}d\rfloor}\mu(i)g(di) \\ ans&=\sum_{d=1}^n\frac{d}{\varphi(d)}f(d)\\ &=\sum_{d=1}^n\frac{d}{\varphi(d)}\sum_{i=1}^{\lfloor\frac{n}d\rfloor}\mu(i)g(di)\\ &=\sum_{T=1}^ng(T)\sum_{d|T}\mu(\frac{T}d)\frac{d}{\varphi(d)} \\ h(T)&=\sum_{d|T}\mu(\frac{T}d)\frac{d}{\varphi(d)} \\ \end{aligned} \]
留意到\(h(T)\)可以直接筛。而\(g(T)\)也是可以“筛”的(建立虚树,自底向上的带权根径覆盖),然后把这俩玩意儿数乘……
简直绝了,复杂度是\(O(b\log n)\)级别的
代码留坑……
转载于:https://www.cnblogs.com/nosta/p/11033914.html
[CF809E] Surprise me!相关推荐
- 小白也能看懂:一文学会入门推荐算法库 surprise
来源 | 机器学习与推荐系统 surprise 支持的每个算法本身思路并不复杂,代码也不晦涩难懂,我们主要的目的是理解它的架构,学习框架各个部分的交互. 这篇文章是想从一个整体的视角,以作者最初的思路 ...
- 早上醒来收获一个Surprise,成为CSDN博客专家了
目录 起步 今天一早醒来打开手机,像往常一样,看一下CSDN app,突然有点小惊喜,因为头像上多了博客专家的图标了.我觉得CSDN这个操作(早上公布通过审核的消息)应该得到点赞的,因为可以让你早上醒 ...
- 自动化测试框架:没有Surprise的原因
今日将框架完整走通,给测试试用.但从测试表情看,显然没有Surprise的意思,反而有种因为改变使用习惯并要学习新框架的厌烦. 尽管事前,我们已经对需求做过自认为相当全面的分析,而且在框架设计上也充分 ...
- 好身材大姐姐学计算机惊喜用英语,英语作文:一个大大的惊喜A Big Surprise
英语作文:一个大大的惊喜A Big Surprise 在日常学习.工作或生活中,大家一定都接触过作文吧,作文一定要做到主题集中,围绕同一主题作深入阐述,切忌东拉西扯,主题涣散甚至无主题.那么,怎么去写 ...
- 《推荐系统笔记(六)》svd在推荐系统中的应用推广(FunkSVD,BiasSVD以及SVD++)及简单实战(surprise库)
前言 奇异值分解(SVD)可以将任意矩阵分解成两个方阵和一个对角矩阵的乘积.借助于SVD,我们可以将推荐系统中的用户-评分矩阵进行分解,通过推广的SVD方法(FunkSVD,BiasSVD和SVD++ ...
- 3分钟学会python_3分钟学会使用Python推荐系统库Surprise
最近做推荐系统,研究了一下Surprise库,使用简单,效果不错. Github地址:NicolasHug/Surprise 实现功能: 找到和用户A相似的N个用户 找到和项目A相似的N个项目 1.i ...
- ImportError: cannot import name ‘evaluate‘ from ‘surprise‘解决方案
报错: 用svd算法做推荐系统时候导入evaluate库的时候总是遇到这个报错Cannot find reference 'evaluate' in 'init.py | init.py' 原因 根据 ...
- 基于Python库surprise的电影推荐系统
surprise 是一个主流的python推荐系统框架,支持的最基本数据格式为movielens dataset,其评分数据格式为 user item rating timestamp # -*- c ...
- Meet Surprise品牌饰品告诉你不同季节佩戴首饰有什么讲究
年复一年,节气时令不停转换:天地万物,以不同的面目对应不同的时令.这世界,真的神奇.那绿草如茵的春.青枝掩映的夏.红叶飘飘的秋.白雪飞扬的冬,为什么总是应时而来从不耽搁?我生于天地之间,在这天地之间穿 ...
- 推荐系统:ImportError: cannot import name ‘evaluate‘ from ‘surprise
根据官方文档,evaluate()方法在1.0.5版中已弃用(功能上已由model_selection.cross_validate()取代),并在1.1.0版中删除 分析: 需要改两个地方 第一个是 ...
最新文章
- Codeforces 458A Golden System
- 如何同时启动多个Tomcat服务器
- springboot-web开发(请求参数)
- 3d数学基础学习总结
- 最优传输理论和生成模型的几何观点
- 一个程序员年近四十岁的一些胡思乱想
- iframe嵌套的html高度,iframe 多层嵌套 无限嵌套 高度自适应的解决方案
- autoreconnect mysql true_连接数据库超时设置autoReconnect=true
- 一流设计师导航|16map,一款强大且智能的设计师导航网站
- 迅捷cad_迅捷协议
- shell 命令 netstat 查看端口占用
- Struts2中的异常处理
- php查询mysql语句_PHP之路——MySql查询语句
- 高一计算机基础知识ppt课件,高一信息技术课件
- 玩游戏显示服务器不稳定,FPS不稳定是什么原因?玩游戏FPS低怎么办?
- 记一次JPA项目启动速度优化
- 推荐一份完整的大数据教学视频
- python制作小提琴图
- html5如何快速选择工具,PS抠图教程!教你PHOTOSHOP中5个快速选择工具
- 用计算机pol计算方位角,如何通过编程代替计算器内部函数“Pol和Rec”