• 07-29 NOIP模拟测试10


    A. 辣鸡(ljh)

    看到这题时有点虚,没选化学啊喂。

    一开始一直在想对角线有没有什么性质,然后进死胡同了,去看T2。

    回来后,想先qj一下点1,然后发现了块内的贡献可以直接算,一开始我用对角线推的,所以有下面这个鬼畜柿子

    ans+=1ll*(1ll*(mi-1)*(mi-2)+(mi-1)*(abs(x-y)+1))*2;

    后来发现这种算法十分nc,其实有 $ans_{块内}= sumlimits_{i=1}^{n} 2 imes (x2_i-x1_i) imes (y2_i-y1_i)$ ...

    接着开始考虑怎么统计各个块之间的,看到N的范围,这板比不能$ Theta(n^2) $

    所以一直在想 $Theta (nlogn)$ 的log哪来的,那么就想用些数据结构什么的来维护边界信息,还有离散化什么的emmm。

    然而正解就是大暴力$ Theta(n^2) $,但其实是不到的,因为有一个显然而有效的剪枝和极其水的数据(过于分散的块)

    我们对所有块按x1为第一关键字,y1为第二关键字排序,然后我们规定每次算i和i之后的块,这样保证了不重不漏

    对于边界可以先算正对的部分,就是 $2 imes (接触线长-1) imes (2-1 )= 2 imes (接触线长-1)$,然后对多出且有贡献的两端缝缝补补。

    剪枝:当i的x2+1够不到j的x1时,后面的j不可能对i有贡献,break掉

    B. 模板(ac)

    测试点分治:

    1~6 节点套set,不断向上找father,在其路径的所有点上加入c,用siz判断即可。$ Theta (nmlogm) $

    7~14 发现没有容量限制,所以就变成了《雨天的尾巴》。注意毒瘤出题人,c有负数,要离散化。

    正解:DSU on tree

    就是树上启发式合并,说白了就是每次更新把小的怼到大的里。

    然后我们要给 大 小 一个定义,类似树链剖分,我们区分轻重儿子。

    对于每个节点u,每次更新我们保留其重儿子的线段树,然后暴力把轻儿子的贡献加到线段树里。

    在u上传给fa时若u不是fa的重儿子,就用懒标记清空线段树(注意不能用memset,复杂度退化)

    复杂度证明在蓝链里。

    C. 大佬(kat)

    看到期望就把我唬住了,虽然看出是求方案的套路也没去推,难度评估错误。

    一开始我想对于一种方案,在i移动的时候是有k天的制约的,就是有k-1天是不变的,所以要把k天的状态留下来。

    然后充分不自信就打了个暴力跑了,也没有推出那个二位的dp。

    然而我们换个角度看,其实对于每一个k题,把每种n题的情况按k题拆开并打乱,发现k长是可以独立计算的,总共n-k+1天的贡献是相同的。

    所以有 $ ans= (n-k+1) imes frac {sumlimits_{i=1}^{m} wt[i] imes (i^k-(i-1)^k)} {m^k} $

    $ (i^k-(i-1)^k $ 是k个数最大值为i的方案数

  • 相关阅读:
    前端各种小细节
    图片等比例缩放
    微信小程序倒计时,购物车,向左滑删除 左拉删除
    微信小程序用户拒绝授权,重新调起授权
    微信小程序swiper切换卡内嵌滚动条不显示
    php面试总结
    tp5.0 学习(三):URL和路由
    pytorch 基础内容
    Grammarly for Chrome-语法、用词自动检查
    时空图神经网路:STGNNs
  • 原文地址:https://www.cnblogs.com/hzoi-yzh/p/11267554.html
Copyright © 2020-2023  润新知