zoukankan      html  css  js  c++  java
  • 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:

  • 相关阅读:
    NestingQuery
    Repeat
    GenericQuery
    StringOpr
    RHEL5.6 安装 virtualbox
    DNS的资料总结
    drop delete truncate 区别
    Linux Shell命令ulimit的用法
    OSI及TCP/IP的概念和区别
    shell:读取文件的每一行内容并输出
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14303880.html
Copyright © 2011-2022 走看看