zoukankan      html  css  js  c++  java
  • THUWC2019滚粗记

    「选择了二中,就是选择了联通」


     Day 0 tan90°

    试机题算么


    Day 1

    大清早从家里出发,搭上了死亡三号线,前往二中

    匆匆领了狗牌饭票,以及一件工作人员红的衣服,赶到宿舍跟腿残的lzh会和

    完了先去试机,顺手敲了个NTT板子熟悉一下环境,还写出了几个弱智错误

    虽然老师来了但他并没去合照,于是我一个人在百步梯上淹没在各地的$dalao$之中

    二中伙食虽然种类不算多,但分量挺足的,还有酸奶和水果,我果然是来骗吃骗喝的,宿舍的被子也相当舒服

    day1的题目其实挺传统的

    T1 邮件

      给$N$封邮件和$N$个邮箱,邮件有个$1$到$N$范围内的目的地,邮箱能容纳一封邮件且送往固定的某地。$Q$次询问,每次询问将$[a,b]$内的邮件投入$[c,d]$内的邮箱(只能投入空邮箱)期望放对目的地的邮件个数(询问之间相互独立)。

      $N leq 50000 \, , Q leq 1000000$或$N leq 100000 \, , Q leq 100000$

     

      一道全场切的签到题...是否投入空邮箱并没有影响,答案就是$sum_{i=1}^n a_i imes b_i$,$a_i$,$b_i$分别是两个区间里颜色(目的地)出现次数。考场上想到容斥拆询问,也想到莫队处理区间答案,就是没想到合起来,实在是太菜了,最后写了个乱搞的处理四个端点的假莫队。其实只要把一个询问拆成四个询问两个前缀区间的$ans$就可以很方便地用莫队维护了。需要根据数据范围调整一下块大小,不然会T。

    T2 旅途

      $r imes c$的网格图,每行每列有铁路及对应的费用和开始服务时间,有些格子有机场及开始服务时间,给出乘飞机费用,给出$Q$个询问,问点对的最短互达时间及在此条件下的最小费用。

      $r , c leq 100000 \, , Q leq 100000$

     

      看到这么冗长的题面瞬间不好了,随意敲了个暴力15.6pts滚粗了。

      正解是分若干类讨论:

      ①起点终点在一起       ②起点->行/列->终点       ③起点->行/列->中转点->列/行->终点

          ④起点->行/列->中转点->列/行->中转点->行/列->终点        ⑤起点->飞机->终点

          ⑥起点->行/列->中转点->飞机->终点                                 ⑦起点->行/列->中转点->飞机->中转点->行/列->终点

          ⑧起点->行/列->中转点->列/行->中转点->飞机->终点         ⑨起点->行/列->中转点->列/行->中转点->行/列->中转点->飞机->终点

    T3 令人印象深刻的题目名称

      给两个序列$A$,$B$,保证$A_i geq B_i$,$A_i leq N+1$,$B_i leq N$,允许对$A$进行操作$(l,r,v)$:使$A_i=min(A_i,v) \, l leq i leq r$。求使用不超过$M$次操作使$A$与$B$相同的合法操作序列数,合法操作序列指无前缀操作序列能使$A$与$B$相同。

       $N leq 100 \, , M leq 10^9$

     

      计数dp+容斥,不熟练果断弃了...

      正解咕咕咕。

     

     于是乎晚上滚回宿舍颓,低层宿舍还没信号...


    Day 2

    二中虽然6:30就放起床铃了,但都很好听?

    T4  畅游清华园

      给$N$个点的树,边有权值$(a_i,b_i)$,点有权值$(c_i,d_i)$,对于点$y$出发的路径,经过一条边$x$的实际距离为$min(a_x+c_y,b_x+d_y)$,求$sum_{i=1}^n sum_{j=1}^n dis(i$->$j)$。

      $N leq 500000 \, , a_i,b_i,c_i,d_i leq 100000$

     

      又一道全场切的签到题。稍微转化一下讨论$a_x-b_x$与$d_y-c_y$的大小关系算贡献即可。可以枚举点依次换根维护答案,也可以枚举边讨论子树内与子树外的贡献,树状数组或主席树维护即可。随手切了再吃块巧克力开心下。

    T5 地形勘探

      交互题。给$N$个点,边长为$1$的树,提供两个函数$feature1(m,*a),feature2(m,*a)$,在$O(m)$时间内返回可重点集$a$到树上某一点路径和的最小值或满足前一条件的其中一个点,分别允许调用$lim1,lim2$次。要求还原整棵树(返回边集)。

      $ N leq 4000$,$lim1=3999,lim2=3997$ 或 $lim1=100000 , lim2=0$

     

      啊蒟蒻第一次见交互题,还不会用下发的交互库,于是写了个$O(n^2)+0+O(n^2)$($lim1+lim2+$时间复杂度)交上去,竟然有分??感觉可以分治做或者先用一个点得到所有点的深度再慢慢搞。

      贴一下正解:

       $feature2$实际上返回的是(不重复)点集的带权重心

       ① $lim1=3999,lim2=3997$ ,两种操作线性次

        先选点做根,用$n-1$次$feature1$求出所有点深度。

        再用$n-3$次$feature2$问出每个点父亲

          · 深度为$i$的点$p$的父亲的深度为$i-1$,设深度为$i-1$的点集为$S$

          · 则 $feature2(S + {p} imes (|S| - 1) )$ 一定返回$p$的父亲

          · 因为只有$p$的父亲满足“每个子树不超过权重和的一半 = $ |S| - 1 $”

        $O(n)+O(n)+O(n^2)$

        ② $lim1=100000, lim2=0$

         继续考虑“按深度加点,对每个点确定父亲”

          · 对一个深度为$d$的点$A_d$,已知深度$ < d $的点构成的树

          · 从根往下找,设当前点$x$的儿子集合为$S$,下一层目标点为$y$,并分成两子集$S_0 , S_1$,令$|S_0| = n$

          · $y otin S_0$:$feature1(S_0 + {x} + n imes {A_d}) = n imes (d - k + 2)$

          · $yin S_0$:$feature1(S_0 + {x} + n imes {A_d}) < n imes (d - k + 2)$

         这样递归判定是$O(n log^2 n) + 0 + O(n^2 log n)$的

         优化算法。可以缩小集合$S$:

          · 以某个儿子为根的子树的当前最深节点 $< d-1$(排除此儿子)

          · 可以减少枚举$k$的次数

          · 若只有一个儿子则直接选择(树上路径压缩)

         $O(n log n) + 0 + O(n^2)$,实际操作次数$40000$次左右

     

    T6 计算几何

      给出平面上$N$个点,要求选出$k$个点组成凸包且无三点共线,求所有方案的凸包面积的期望和方差,对$998244353$取模。

      $N leq 100$

     

      计算几何??感觉不可做,敲了个$N leq 18$的暴力枚举所有凸包走人,暴力还不怎么好写,试图推所有点在$x$轴正半轴或$y$轴正半轴上的柿子还没时间退出来就结束了。。

      正解是依次考虑凸包最左边的点并对右边点极角排序,dp同时转移方案数,面积和,面积平方和,再来一下极角排序可以由$O(n^4)$降到$O(n^3)$或者$O(n^3 log n)$

     

    day2上午就考完了,下午又只能待在宿舍,机智的舍友跑到有信号的高层去玩耍了...day1day2爆炸的也许还能指望一下day2+?


    Day 2+

      事实证明没指望了...

      89 50 4E 47 0D 0A 1A 0A......

      大概内容是两种校验算法,简化png文件的读入和输出,soble边缘检测,halton序列随机采样(smg),基于像素或者块的纹理合成。

      d2+的题目感觉还是挺新颖的,有别于传统竞赛模式,内容丰富,解法自然... 不过3小时做8个任务感觉还是有点紧。

      看到十分长的学习手册以及八篇英语论文就感觉不好了...我还傻乎乎的仔仔细细看学习手册的内容,还试图自己归纳理解png的格式,花了好大力气才搞懂学习手册到底在说什么。然后又作死地从png读入开始写起,虽然是模拟,但还是对着数据一边分析一边写,于是写的非常慢。我还在研究手册的时候隔壁的早都开始敲代码了,我后来才反应过来出题人都把想要传达的信息安排好了...然后回过头去嗑校验算法,都是比较无聊的模拟题,照着学习手册做就好了,然后我没想清楚,又浪费了许多时间,于是乎到最后我开始试图弄懂输出png的时候已经没时间了,成功GG。事实证明没有get到主题人的意图下场会很惨。

      总结下:出题人意图是想让选手在短时间内依次学习重点,跳过无用内容,以解决任务为目标,而不必深究具体内容,代码最好模块化,同时也比较考验码力。所谓是提前体验大学生活。真是毒瘤啊


    Day 3

      我还是太菜了连面试都没有... 据估计我好像就差个几十分,啊

      于是愉快的听讲题以及休息若干个十五分钟。

      下午自然是广告宣讲时间,弹幕很快乐,了解了下清华算协还有清华科协。然后就是用来给咕咕的协议拖时间的真正的广告。今年因为某些原因都变成了一二三等奖,当然我四等奖滚粗了。然后就回学校了,也没得WC去...

      感觉自己还是太菜了,还有许多常考的知识点没深入学习,现在也没有足够时间允许我像之前那么投入了。不过能来到这个全国级别的平台,已经见识到了很多班里同学见识不到的东西了。

     

  • 相关阅读:
    Ubuntu apache 虚拟主机配置
    Apache Directory 指令
    Sphinx 全文检索
    双系统Linux(ubuntu)进入windows的NTFS分区之挂载错误
    Composer 中国镜像
    Liunx下全局安装 Composer
    提高代码质量技巧
    mysql 中浮点型与定点型记录
    cookie安全
    php 小坑记录
  • 原文地址:https://www.cnblogs.com/hnooo/p/10311821.html
Copyright © 2011-2022 走看看