• [JZOJ5970] Space


    Description

    在一个四维空间中,给 (4)(n) 的排列 (A,B,C,D),对于点 ((x,y,z,w)) ,到点 ((A_x,B_y,C_z,D_w)) 的花费为 (1),到其余点的花费为 (2)。有一个人要从 ((1,1,1,1)) 出发,遍历所有点再回到 ((1,1,1,1)),问最小花费。(nleq 10^5)

    Sol

    以下皆为口胡。

    首先要求四维空间环的个数还是挺显然的。

    (A'(x)) 表示在排列 (A) 中环长为 (x) 的环的个数。那么答案就是:

    [sum_{A'(a) e 0}sum_{B'(b) e0}sum_{C'(c) e0}sum_{D'(d) e0} A'(a)B'(b)C'(c)D'(d)frac{abcd}{operatorname{lcm}(a,b,c,d)} ]

    这个复杂度是 (O(n^2)) 的因为每项中值不为 (0) 的大概只有 (sqrt n) 个。大概可以拿并查集搞一下?(再次强调这些都是口胡)

    发现这个式子跟 (abcd) 四项都有关很烦啊,如果把它拆成只跟 (ab) 有关的项和只跟 (cd) 有关的项那似乎就可做一点了...?然后拆拆拆之后式子后边那一大坨变成了:

    [frac{abcdgcd(operatorname{lcm}(a,b),operatorname{lcm}(c,d))}{operatorname{lcm}(a,b)operatorname{lcm}(c,d)}=gcd(a,b)gcd(c,d)gcd(operatorname{lcm}(a,b),operatorname{lcm}(c,d)) ]

    惊奇地发现拆成了只跟 (ab) 有关的项和只跟 (cd) 有关的项。

    于是可以维护两个集合 (S_1,S_2)(S_1=left{(gcd(a,b)A'(a)B'(b),operatorname{lcm}(a,b)) ight}),(S_2) 同理。

    于是答案就是:

    [sum_{(a,b)in S_1}sum_{(c,d)in S_2}acgcd(b,d) ]

    开始反演魔法

    [sum_{(a,b)in S_1}asum_{pmid b}psum_{(c,d)in S_2} cepsilon(gcd(b,d)=p) ]

    [sum_{(a,b)in S_1}asum_{pmid b}psum_{kmidfrac bp}mu(k)sum_{(c,d)in S_2}cepsilon(pkmid d) ]

    (f(x)=sumlimits_{(c,d)in S_2} cepsilon(xmid d))

    式子变成:

    [sum_{(a,b)in S_1}asum_{dmid b}f(d)sum_{pmid d}pmu(frac dp) ]

    后边那个是 (id*mu) 显然等于 (varphi)

    [sum_{(a,b)in S_1}asum_{dmid b}varphi(d)f(d) ]

    然后就能通过本题了。

    什么jb狗题**才写

  • 相关阅读:
    火狐浏览器kaptcha验证码点击无法刷新问题解决方法
    算法学习笔记——洗碗时遇到的汉诺塔问题
    JSP学习笔记
    springmvc中Tomcat跨服务器上传中文名文件报错解决方案
    MAVEN项目报错解决方法集锦(1)
    原生js模板语法之underscore.js
    HTML针式打印机打印模板
    elementui form表单验证
    vue+swiper背景图随swiper改变
    uni.navigateTo和uni.switchTab的区别
  • 原文地址:https://www.cnblogs.com/YoungNeal/p/10300645.html
Copyright © 2020-2023  润新知