• 海蜇?海蜇!


    题意

    把题面搬这里

    细节

    • 仅关键点范围在({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})

  • 相关阅读:
    C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)
    Asp.Net开发学习知识点整理
    Javascript,闭包
    sublime 自定义快捷生成代码块
    $.extend()使用
    ztree 数据格式及其配置
    ztree 数据格式 及 基本用法
    表单中两个submit如何判断点击的是哪个submit
    myChart.on('finished')
    jQuery数组排序
  • 原文地址:https://www.cnblogs.com/Grice/p/12381905.html
Copyright © 2020-2023  润新知