zoukankan      html  css  js  c++  java
  • 海蜇?海蜇!

    题意

    把题面搬这里

    细节

    • 仅关键点范围在({0,...,d-1})
    • 本身值域是无限的
    • (a_ile 2.5 imes 10^5),这说明(20)维,(d=4)时,实际关键点高维是(0)...这里坑死了...

    做法

    下面讨论(d=4)的情况
    若以原点出发,本质不同的关键点是不多的,记一个点为状态({d_0,d_1,d_2,d_3}),走(K)步的方案为(dp_{b_1,b_2,b_3})
    在处理(dp)数组前,先预处理一些东西

    • (f_{i,j,k})为在(j)维空间中,从原点走(k)步到((i,i,...,i))的方案数

    [f_{i,j,k}=sumlimits_{x}f_{i,j-1,k-x-(x+i)}{kchoose x+x+i}{x+x+ichoose x} ]

    • (h_{i,j})为只考虑(b_0,...,b_i)下,走(j)步到达该点的方案数

    [h_{i,j}=sumlimits_{k}h_{i-1,j-k} imes f_{i,b_i,k} imes {jchoose k} ]

    • (g_i)为走恰好(i)步到达({b_0,b_1,b_2,b_3})

    [g_i=h_{d,i}-sumlimits_{j}g_j imes f_{0,20,i-j} ]

    (dp_{b_1,b_2,b_3}=sumlimits_{i}g_i imes 40^{K-i})
    然后(O(N^2))算坐标差就好了

    考虑优化算差过程
    在手玩(d=2)时发现是异或,如果凭直觉(d=4)也是异或就全完了...
    定义(oplus)为差运算,实际对于某一位来说,是算(|a_i-b_i|)
    对数组定义(oplus)(a=foplus g):$$a_{x}=sumlimits_{i,j}[ioplus j=x]f_i imes g_j$$

    (d)进制下,记(a_i)为数组(a)最高位为(i)的子数组,有
    (egin{aligned}\ a_0&=f_0oplus g_0+f_1oplus g_2+f_3oplus g_3\ a_1&=f_0oplus g_1+f_1oplus g_0+f_1oplus g_2+f_2oplus g_1+f_2oplus g_3+f_3 oplus g_2\ a_2&=f_0oplus g_2+f_2oplus g_0+f_1oplus g_3+f_3oplus g_1\ a_3&=f_0oplus g_3+f_3oplus g_0\ end{aligned})

    (x'=(f_0+f_1+f_2+f_3)oplus (g_0+g_1+g_2+g_3),~~y'=(f_0-f_1+f_2-f_3)oplus (g_0-g_1+g_2-g_3))
    (x=a_0+a_2=(x'+y')/2,~~y=a_1+a_3=(x'-y')/2)

    类似的,可以将(a_0,a_2)(a_1,a_3)分开
    复杂度(T(n)=O(N)+6T(N/4)=N^{log_46})

  • 相关阅读:
    IntelliJ IDEA部署web程序图文教程
    在linux中配置tomcat
    mysql在linux上重启
    ubuntu安装配置gradle
    使用Spring Boot和Gradle创建AngularJS项目
    Can't create/write to file '/tmp/#sql_3105_0.MYI' (Errcode: 13)
    linux修改文件权限
    怎样使用淘宝npm镜像
    javascript(一):javascript基本介绍及基本语法
    Sass学习
  • 原文地址:https://www.cnblogs.com/Grice/p/12381905.html
Copyright © 2011-2022 走看看