• NOIP2020题解


    从哪里跌倒就在哪里站起。
    A:
    签到题
    考虑每个排水口对答案的贡献,可以dp求解。
    (f_i)表示从某个排水口到(i)的贡献。
    (i)的度数为(d),则(f_v+=frac{f_i}{d})
    要写分数类+高精度。
    然而我由于先乘后除所以被卡掉(30)分,离谱。
    有人不拓扑排序也是(60)就离谱。
    B:
    考虑预处理(f_{i,j})表示前缀(i)中有(j)个字符为奇数。
    f可以用前缀和求。
    (g_i)表示后缀(i...n)有多少个字符出现次数为奇数。
    枚举前缀(AB),凭借(f)就可以更新答案。
    枚举次数是调和级数。
    优化1:枚举时不用双哈希,使用kmp。
    加上这个优化我就过了吧。
    优化2:显然(AB)的出现次数可以二分。可以证明时间复杂度是(O(n))
    优化3:枚举的((AB)^i)的函数值只可能有2种。所以我们只需要做(2n)次树状数组查询即可求出答案。
    优化4:树状数组也是不必要的。考虑顺序扫描(AB)
    扫描后函数值只可能会变化(1),于是可以使用桶维护。
    在后缀更新时如果更新处的值小于等于函数值,则把答案++。
    当函数移动时加上/减去桶对应的值。
    C:
    考虑归并排序。
    D:

  • 相关阅读:
    前端css实现最基本的时间轴
    前端css实现最基本的时间轴
    那些年遇见的奇葩编程书籍封面
    那些年遇见的奇葩编程书籍封面
    2018年国内就业薪资高的7大编程语言排行
    乡愁
    乡愁
    微光系列之青春无敌美少女
    1287 矩阵乘法
    一些关于DP的知识
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14303880.html
Copyright © 2020-2023  润新知