zoukankan      html  css  js  c++  java
  • 「考试总结2021-04-04」晓看

    A.rng

    考场并没有具体想明白这个概率如何计算,然后就挂掉 (60)

    ([l_1,r_1],[l_2,r_2]) 对应到平面直角坐标系上面,在 (y=x) 上面的面积除掉总面积就是对应概率

    那么考虑其可以构成一个梯形或者三角形,那么设

    [f(x_1,x_2)=egin{cases} x_1^2 [x_1<x_2]\2x_1x_2-x_2^2 [x_1le x_2]end{cases} ]

    那么计算面积就可以直接容斥,也就是 (f(l_1,l_2)-f(l_1,r_2)-f(l_2,r_1)+f(r_1,r_2)/(2len_1len_2))

    那么写 (4)(f) 分别表示,每个分大小讨论,开两个 (BIT) 做即可

    B.lg

    前置知识:(varphi * I=Id)

    考虑将把卷积里面的 (varphi(x)) 换成 (varphi(frac{n}x))

    也就是有多少个不大于 (n) 的数只是 (x) 的倍数,然后就没了

    本题考虑对 (lcm) 中的每个因子进行考虑,枚举每个因子的次数,那么 (gcd) 的限制就是至少有一个是其倍数

    可以用任意选减掉没有其倍数再任意选来容斥得到,套用上面的卷积就能把式子变成:

    [Ans=prodlimits_{p^ile m} p^{ sumlimits_{x=1}^{m} f(p^i,x) varphi(x)} ]

    实现的时候先枚举 (p^{i}),计算指数,乘起来即可

    注意指数上取模是 (mod-1)

    C.pm

    先贪心:如果交换一个连续段使得交换后可以让所有的点放到对应位置,同时交换次数少于 (len) 那么交换

    不难发现这样一个段必然是越短越好,每次可以把操作次数减少 (1),也就是每个点选择满足的最右一个

    这样一个连续段需要满足值域下标相同,这个可以使用前缀和 ,区间 (max) 解决

    另外,还需要满足这个区间里面的逆序对个数的限制,因为值域的条件,那么计算 ([1,l-1]) 里面 ([r+1,n]) 的个数并减掉,加上前缀逆序对的贡献

    不难发现这个可以使用主席树实现
    动态
    考虑这样一个段的逆序对个数必然是不小于 (len-1) 的,严谨证明考虑归纳,因为最后一个点必然贡献答案,否则可以删掉(也就是等于区间最小值),类似得如果不贡献可以删掉一个前缀区间

    (用词意会即可,毕竟不是卷面书写)

    同时只需要关心最后一个值域下标相同的点,那么可以在 (Theta(nlog n)) 的复杂度内计算这样的点

    剩下的考虑 (dp) 即可,转移考虑取上一个或者 把这一段进行交换,记录转移点,最后输出即可

    在输出答案的时候可以将每个点不断交换即可,记录每个点的位置,从小到大枚举,复杂度为逆序对个数,不超过 (n)

    这题印象深刻,而且理解相对明白了(证了这么多地方)

  • 相关阅读:
    disabled
    C# 实例化顺序
    session问题
    Node js文件系统
    Node js WEB模块
    Node js GET POST请求
    Node js路由
    Node js函数
    Node js模块系统
    Node js 安装+回调函数+事件
  • 原文地址:https://www.cnblogs.com/yspm/p/14617738.html
Copyright © 2011-2022 走看看