zoukankan      html  css  js  c++  java
  • 2019暑假杭二day7测试总结

    T1

    题目大意

    (sum_{i=1}^nsum_{j=1}^nmu(gcd(i,j))\%998244253,nle 10^{10})

    sol

    [sum_{i=1}^nsum_{j=1}^nmu(gcd(i,j))\ =sum_{k=1}^nsum_{i=1}^nsum_{j=1}^nmu(k)[gcd(i,j)=k]\ =sum_{k=1}^nmu(k)sum_{i=1}^{lfloorfrac{n}{k} floor}sum_{j=1}^{lfloorfrac{n}{k} floor}[gcd(i,j)=1]\ =sum_{k=1}^nmu(k)sum_{i=1}^{lfloorfrac{n}{k} floor}sum_{j=1}^{lfloorfrac{n}{k} floor}sum_{d|i&d|j}mu(d)\ =sum_{k=1}^nmu(k)sum_{d=1}^{lfloorfrac{n}{k} floor}mu(d)sum_{i=1}^{lfloorfrac{n}{kd} floor}sum_{j=1}^{lfloorfrac{n}{kd} floor}\ 令sum(x)=sum_{i=1}^n1\ 则原式=sum_{k=1}^nmu(k)sum_{d=1}^{lfloorfrac{n}{k} floor}mu(d)sum({lfloorfrac{n}{kd} floor})^2\ 考虑枚举k imes d\ 原式=sum_{T=1}^nsum_{d|T}mu(d)mu(frac{T}{d})sum({lfloorfrac{n}{kd} floor})^2\ 令f(x)=sum_{i|x}mu(i)mu(frac{x}{i})=(mu*mu)\ 原式=sum_{T=1}^nf(T)sum(lfloorfrac{n}{T} floor)^2 ]

    后面明显可以整除分块,问题变成了如何快速求(f(x))的前缀和,题解说可以用杜教筛,可我就是不会筛((mu*mu)),只写出了线筛的分。

    T2

    题目大意

    给定一个只包含小写字母的字符串 , 求其本质不同的子序列的个数,(len le 10^6,ans)(998244353)取模。

    sol

    我当时想了一个用tire树维护有多少个子序列,很明显方案数爆炸。

    其实正解不需要任何数据结构,十分简单。

    考虑递推,设f[i]为前i个字母组成的本质不同的子序列的个数。(f[i]=2f[i-1])。但这会有很多重复的,设(s_i)为第i个字母,我们还需减去之前以(s_i)结尾的子序列的个数,这些都被重复算了一次。以(s_i)结尾的子序列的个数也可以递推,+=f[i]-f[i-1]就行,因为多产生了这么多贡献。

    T3

    题目大意

    请你维护一个初始为空的点的集合,支持以下操作:

    • A x y 加入点 (x,y)
    • Q l r x y 询问点 (x,y) 与第 l 个 r 到个点的匹配度的最大值

    点 (x,y) 与 (a,b) 的匹配度为 ax+by

    sol

    我只写了暴力。

    正解把这个问题转为了几何问题,设 ax+by=k ,则 (-frac{x}{y}a+frac{k}{y}=b),问题变成了给一个斜率固定的直线,过区间内的一些点使截距最小。然后变成了我不会的线段树维护凸壳。

  • 相关阅读:
    JavaScript原生对象属性和方法详解——Array对象[转]
    SVN的trunk branch tag (二)
    git入门使用摘录
    文字画工具推荐
    mysql 基础操作
    mobile 测试入门思维导图
    淘宝性能测试线下测试与线上跟踪体系
    github使用入门 之GIT GUI Windows版
    C++ 单向链表反转
    shell脚本实例一,移动文件夹中大于2000B的文件到另一个文件夹
  • 原文地址:https://www.cnblogs.com/hht2005/p/11402646.html
Copyright © 2011-2022 走看看