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去...

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

     

  • 相关阅读:
    UVA 11174 Stand in a Line,UVA 1436 Counting heaps —— (组合数的好题)
    UVA 1393 Highways,UVA 12075 Counting Triangles —— (组合数,dp)
    【Same Tree】cpp
    【Recover Binary Search Tree】cpp
    【Binary Tree Zigzag Level Order Traversal】cpp
    【Binary Tree Level Order Traversal II 】cpp
    【Binary Tree Level Order Traversal】cpp
    【Binary Tree Post order Traversal】cpp
    【Binary Tree Inorder Traversal】cpp
    【Binary Tree Preorder Traversal】cpp
  • 原文地址:https://www.cnblogs.com/hnooo/p/10311821.html
Copyright © 2011-2022 走看看