zoukankan      html  css  js  c++  java
  • PKUWC2020?退役记

    PKUWC2020?退役记

    RT,暂时退役搞期末考了。

    Day -inf

    woc,发现自己能去 PKUWC,rp 好爆了。

    woc,发现自己压线能去 WC,rp 好爆了。

    woc,发现自己 div2 的题都不会,而且一次不会就不会两道,实力弱爆了。

    然后就是颓废颓废颓废。。。

    Day 0

    忘了学校盖章。。。

    住宿被搞了两次。。。

    rp 差爆了。。。

    途中听说 PKUWC 改 OI 赛制了,爆零预定

    Day 1

    早上两个小时讲课变成 40 分钟了

    去未名湖和博雅塔(一塌糊涂)玩了一下,再去西门拍了照。

    真是颓废

    中午去睡了一觉,去考场一看

    不愧是听说,赛制是 IOI 赛制

    没有主地斗,可能有学上了

    我在想桃子

    t1 先想了一个矩乘,然后萎了

    t2 暴力不会

    t3 数论结构

    暴力有 50 左右,不愧是我

    然后发现 memset0 和 zoxx 在我旁边

    他们好厉害啊,我自闭了

    码码码,大概三点半成功 get 58

    我是 sb,然后上了个厕所冷静了一下

    算了,心态崩了,打四方暴力吧

    艹,居然打出来了,四点半了。

    好像可以二方?

    打完五点十几,脑子一抽,会一个 log 了。

    码一码,五点半了。

    md,没调出来我退役好了

    终于,五点四十八调出来了,1A 了。

    然后 t3 m=1 的包没时间写了

    不过 a 了一题,很开心。

    (21+100+19=140)

    题目:

    t1:

    给定一个排列 P,将字典序 <=P 的排列按顺序接在一起,求本质不同的子序列(可以为空)的个数。

    (nle 50)

    t2:

    有 n 个集合,每次等概率选择两个不一样的集合合并起来

    定义一个集合的价值为 (max(S)-min(S))^2。若有 k 个集合,价值为 k 个集合价值之和。

    f(i) 为有 i 个集合的期望价值,求 f(l)^97673+...+f(r)^97673

    (nle 2 imes 10^5)

    t3:

    有一个 n*m 的矩阵,初始为空。有 q1 次操作 1,有 q2 次操作 2,操作 1 后操作 2

    操作 1:s,l,r,x,将 gcd(a,s)==1,l<=b<=r 的格子 (a,b) 加 x

    操作 2:s,l,r,询问 gcd(a,s)==1,l<=b<=r 的格子之和

    数据保证 s 随机。

    (n,mle 5 imes 10^4,q_1,q_2le 10^5)

    t1,t2 mod = 998244353

    t3 mod = 2^32

    题解:

    t1: 找规律,然后类似数位 dp 的方式矩乘算一算方案数。

    t2: 三次 NTT,过程挺复杂的,期末考后再补。

    t3: 你觉得我会?听 jls 说复杂度要求导证明,(O(nlog^3n+nsqrt{n})),神仙莫比乌斯反演。

    Day 2

    我是 sb。。。

    花了两个小时大众分拿到后先开 t2 没开 t3

    t2 没调出来,t3 没写

    艹,我 tm 如果三个小时写 t3 我还写不出来???

    最后三小时就没拿分。。。

    (100+65+42=207) 滚粗了。。。

    有一种深深的无力感。。。

    Day 3

    拿了个奖,海星。

    一道数学题让我拿了个奖,海星。

    不过让我知道了我的实力不行。。。d2 难度严格小于 d1 难度时我 d2 考成 sb。。。开题策略失误,先开 t2 再开 t3,导致 t2 没调出来 t3 没时间写。。。

    然后 t3 想了半个小时会了。。。我考场上如果最后 3h 全放 t3 上我还写不出 t3???

    这让我想起了别人打 cf div1 随便 A 题,我打 div2 都有些吃力。

    基础不行啊。。。要好好补一补了。。。(还有 ubuntu)

    算了,结果是好的,我无所谓了。运气好爆了。

    题目:

    t1: sbt

    t2:

    有一个分式序列,给定每个位置的值和长度的排列,分式长度小的先计算,每次询问一个区间经计算后的值。

    (n,mle 5 imes 10^5)

    t3:

    有一个无向图,无向图上再连一个环(i->i%n+1)的边,权值为 10^9,问这张图两两之间的最小割之和。

    (nle 7000,mle 10^5,wle10^4)

    t2,t3 mod = 998244353

    题解:

    t1: sbt

    t2: 好像有 O(n) 的做法,考虑每个数单调栈上的奇偶性。不过出题人的做法是线段树合并,暴力又好懂,不过问了一下 srz,这个可以不用合并,记一记前缀后缀用最大子段和的方式算一算。

    t3: 环上断两条边后把问题转化成一段区间内 l<=(i or j)<=r 相连和其他点之间相连的 max,这个东西可以用最小割树的方法,也可以预处理出矩阵的前缀 max 和后缀 max,O(1) 出答案。

    附:

    晚上睡觉的时候想了一想,发现我考场上 t2 的思路是对的,只不过细节有些多,我 naive 的以为左右边应该有对称美(调不出来 flag*1),然后就爆炸了。

    我们将这个序列用广义线段树的方法建出来,发现一个区间对应了一段右儿子和左儿子拼起来。那么我们可以用 zkw 线段树的方法,从叶子结点向上跳,l-1 的叶子碰到左儿子把右儿子合并一下,r+1 的叶子碰到右儿子把左儿子合并一下,这样就能算出答案了。

    我们再考虑合并时一个值会变成它的逆元(下面记为翻转)几次。对于左边,因为每一个子区间都是右儿子,所以除了第一个从叶子开始的右儿子结点,其他右儿子会被翻转一次。那么我们预处理从根开始向下的逆元之积,再处理出一个节点向上最近的左儿子,跳到 lca 处就可以出答案了。

    对于右边,因为每一个子区间都是右儿子,所以每一个节点都会被翻转到 lca 路径上左儿子个数次。那么一段左儿子相邻一定是奇数不翻转偶数翻转,所以我们可以类似左边的方法预处理出从根开始向下的答案,不过不用处理向上最近的右儿子。不过如果 lca 下面那个结点开始到根左儿子个数有奇数个,那么要把答案翻转。这样就能出答案了。

    不过有很多细节,比如 lca 下面那个结点是不算的,如果左边没有右边不用翻转等等。。。我考场上就被各种细节弄自闭了。。。

    唉,day2 应该是可以 ak 的啊。

    再说一下 d1t2 我考场的做法吧。

    首先考虑排序后一对 ((i,j)) 构成的集合对答案的贡献。我们只用考虑这个集合在 ((i,j)) 中间选了几个,剩下的数合并了多少次。

    (n) 个集合,每次有 (nchoose 2) 种选法,一共有 (f_n=prod_{i=2}^n{ichoose 2}) 种选法。因为集合个数为 (0/1) 时可以不合并,所以 (f_0=f_1=1)

    我们设在 ((i,j)) 中间选了 (k) 个,一共合并了 (t) 次。

    [ans_t=sum_{i=1}^nsum_{j=i+1}^nsum_{k=0}^{j-i-1}(a_j-a_i)^2{j-i-1choose k}{tchoose k+1}f_{k+2}frac {f_{n-k-2}}{f_{n-t-1}} ]

    这样就 (O(n^4)) 了。

    接着,我们发现只有两项与 (i,j) 有关。预处理出这些项,就可以优化了。

    [len_{j-i}=sum_{i=1}^nsum_{j=i+1}^n(a_j-a_i)^2 ]

    [val_k=sum_{i=k}^{n-2}len_{i+1}{ichoose k} ]

    那么式子就变成了

    [ans_t=sum_{k=0}^{n-2}val_k{tchoose k+1}f_{k+2}frac {f_{n-k-2}}{f_{n-t-1}} ]

    这样就可以 (O(n^2)) 了。容易发现这三个式子都可以 ( ext{NTT}),所以就 (O(nlog n)) 了。

    不过我 (ans_1) 有锅,要特判一下,我也不知道为什么。。。如果你知道的话可以私信我。。。

    以前以为自己数据结构还可以,结果反倒在大型考试做出来的第一道题居然是一道不错的数学题。。。看来可能还是数学题比较适合我吧。。。

  • 相关阅读:
    js中的单例模式
    node.js
    vscode设置
    Array.from();Object.keys();Array.map()
    js题
    如何申请成为企业微信,并成为第三方服务商
    微信企业号第三方平台应用开发
    SQL Server 给表和字段添加说明
    sql 语句写的行列转换
    不同数据库之间复制表的数据的方法
  • 原文地址:https://www.cnblogs.com/owencodeisking/p/12088879.html
Copyright © 2011-2022 走看看