zoukankan      html  css  js  c++  java
  • 2018/3/27 省选模拟赛 140分

    T1 树归 100

    T2 写的快速幂卷积 40,超时了,正解是矩阵乘法之类的。

    正解

     1 暴力(m<=5):将x的所有约数提出来矩阵乘法
     2 
     3 定义乘法同构:
     4 A=p[1]^a[1] * p[2]^a[2] * ... * p[n]^a[n]
     5 B=q[1]^b[1] * q[2]^b[2] * ... * q[n]^b[n]
     6 其中p[i]与q[i]皆为质数
     7 将数组a与b降序排序后如果是完全相同的,那么称A与B是乘法同构的
     82*2*2*2*3*3*57*11*11*3*3*3*3 同构
     9 
    10 我们发现,10^5内在乘法同构下本质不同的数字只有165个
    11 定义kind[x]:x在乘法同构下所属于的种类
    12 对着165个本质不同的数构造出矩阵A
    13 我们发现,f0[d]对fk[x](d是x的因子)的贡献为f0[d] * A^k[kind[1]][kind[x/d]]
    14 所以我们只需要A^k[kind[1]][]这一行就够了
    15 预处理A,A^2,A^4,A^8,...O(165^3*log(n))
    16 对于每次询问因为最终只需要一行,可以优化到O(165^2*log(n))
    17 总复杂度O(165^3*log(n) + m*165^2*log(n))
    View Code

    T2 交互题,不会写,正解是朝任意方向走一定步数(不回头)然后判断此时的深度与初始深度。

     1 假设初始点为s,首先暴力找出s的父亲x
     2 定义函数work(s,x)
     3 从x开始随机游走9步,要求:第一步不能走向s,不走回头路
     4 假设最终走到了y,询问y的深度
     5 我们知道了x与y的深度,也知道x与y之间的距离(9),那么我们可以轻易走到x与y的lca处,并称此点为z
     6 如果z=x,也就是说一开始就是向更深处走的,那么我们已经知道了x向深处走的两个方向(s方向与y方向),自然可以推出x的父亲f,递归work(x,f)
     7 如果z!=x且z!=y,那么我们知道了z向深处走的两个方向(x方向与y方向),自然可以推出z的父亲f,递归work(z,f)
     8 如果z=y,递归work(s,x),即什么都不做
     9 我们发现有2分之一可能深度减1;4分之一可能深度减2;8分之一可能深度减3...
    10 于是愉快的在测距期望initialDeep/2次的情况下找到出口
    View Code

    我真鸡儿丢人

  • 相关阅读:
    [课程设计]Scrum 1.5 多鱼点餐系统开发进度(点餐页面框架修复及继续布置)
    [课程设计]Scrum 1.4 多鱼点餐系统开发进度(点餐页面框架布置)
    [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&美化)
    任务完成情况
    SCRUM项目4.0
    操作系统 实验三 进程调度模拟程序
    Scrum 项目3.0
    操作系统 实验二、作业调度模拟程序 【完整版】
    Scrum 项目2.0
    0428 《构建之法》第6~7章读后感
  • 原文地址:https://www.cnblogs.com/137shoebills/p/8656735.html
Copyright © 2011-2022 走看看