• NOI2014 Day2


    NOI2014 Day2

    动物园

    题目描述:给出一个字符串(长度为(Len)),设(num[i])为字符串的前(i)个字符构成的子串((A))中,满足(A)的前(L)个字符既是(A)的后缀,且该后缀与前(L)个字符不重叠,(L)的最大值,求(prod_{i=1}^{Len}(num[i]+1))

    solution:
    扩展KMP,减去重复部分就是了……

    时间复杂度:(O(n))

    随机数生成器

    题目描述:给出数列(x_0, x_i=(ax_{i-1}^2+bx_{i-1}+c)mod d),设(T)(1)(K)的递增序列,对(T)进行(K)次交换,第(i)次交换(T_i)(T_{(x_i mod i)+1}).在进行(Q)次交换,交换输入的两个下标的数。令(K=N*M),将(T)按顺序填入棋盘,从第一行第一列的格子出发,每次向右走或向下走,走到第(N)行第(M)列,将路径上的数从小到大排序,称为路径序列,输出字典序最小的路径序列。

    solution
    这道题主要是空间卡得太死了,只能开两个(N*M)的数组,首先按要求把(T)算出来,然后新开一个数组记住每个数的位置,然后贪心,从小到大选数,能选就选,最后输出。

    时间复杂度:(O(N * M * 常数))

    购票

    题目描述:有一棵(n)个点的树,有边权。从一个点出发((i)),如果要走到(1)号点,则选择该点的一个祖先(该祖先到(i)的距离不大于(L_i)),到这个祖先的费用为两点间的距离*(p_i)+(q_i),问每个点到(1)号点的最小费用。

    solution
    这题如果没有距离限制还是比较简单的。如果没有距离限制,那么每个点都可以选择任意一个祖先,用单调队列维护一下就好了。但这里有距离限制,所以可以考虑一下用cdq分治
    每次找出树的重心,先做重心的祖先的那棵树,因为祖先的答案已经求出了,所以子树的点可以按照能到达的高度进行排序,用祖先的答案去更新子树的点的答案(单调队列),然后在分治重心的儿子。画个图吧。

    重心这个点就特殊处理一下就可以了。

    时间复杂度:(O(nlog^2n))

  • 相关阅读:
    行列式运算法则
    神经元的数学模型
    Neural Network and Artificial Neural Network
    常见的23种设计模式
    Java 基本数据类型 及 == 与 equals 方法的区别
    MySQL经典编程问题
    MyEclipse配置tomcat报错
    MySQL 日期类型函数及使用
    MySQL dump文件导入
    MySQL 的两个特殊属性 unsigned与 zerofill
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/4711964.html
Copyright © 2020-2023  润新知