zoukankan      html  css  js  c++  java
  • PKUSC2021 自闭总结及部分题目整理

    由于考的太差,所以还是写一写。

    题解

    Sum Transformation

    题意

    定义一次矩阵变换 $F ightarrow G$ 为对于每个 $1leq i,jleq n$ ,$G_{i,j}$ 的值为矩阵 $F$ 的第 $i$ 行与第 $j$ 列值相加,其中 $F_{i,j}$ 的值计算两次。

    求给定一个矩阵变换 $k$ 次的矩阵。

    $1leq nleq 10^3,0leq kleq 10^9$ 。

    题解

    显然可以算 $F_{i,j}$ 对最后每个位置的贡献。

    打个表可以发现 $F_{i,j}$ 对 $G_{x,y}$ 的贡献只有 $3$ 种情况,$i=x,j=y$ 或 $i=x,j eq y/i eq x,j=y$ 或 $i eq x,j eq y$ 相关。

    矩乘优化即可,时间复杂度 $mathcal O(n^2+log k)$ 。

    逛街

    题意

    给定长度为 $n$ 的序列 $a_i$ ,$Q$ 次操作。

    1.对于 $forall lleq ileq r,a_i=max{a_i',a_{i+1}'}$ ,其中 $a_i'$ 为未修改前 $a_i$ 的权值。

    2.求区间严格前缀最大值的和。

    $1leq n,Qleq 3 imes 10^5$ ,保证 $a_i$ 互不相同。

    题解

    若没有 $1$ 操作那么可以参考“楼房重建“或对于每个点连向后面比他大的点建树倍增。

    先考虑对于 $1$ 操作 $l=1,r=n$ 的情况。

    若经历了 $k$ 次 $1$ 操作那么 $a$ 序列可以表示为 ${max{a_1,a_2,...,a_k},max{a_2,a_3,...a_{k+1}},...}$ 。

    那么对于询问 $[l,r]$ ,令 $max{a_l,a_{l+1},a_{l+2},..,a_{l+k-1}}=p$ ,设在原序列 $a_i$ 中 $a_{L}=x$ ,同理可得 $R$ 。

    则询问 $[l,r]$ 等价于原序列中询问 $[L,R]$ ,原因显然,时间复杂度 $mathcal O(nlog n)$ 。

    观察 $1$ 操作,令 $c_i$ 表示当前 $i$ 位置的值为 $max{a_i,a_{i+1},...,a_{i+c_i-1}}$ ,那么操作 $[l,r]$ 为 $iin[l,r),c_ileftarrow max{c_i,c_{i+1}}$ 。

    显然 $c_1leq c_2leq ...leq c_n$ ,那么 $c_ileftarrow c_{i+1}$ 。

    但是这如何快速询问 $[l,r]$ 时的答案呢?

    若对于 $lleq i<jleq r$ ,若线段 $[i,c_i]$ 与线段 $[j,c_j]$ 有交那么可以将 $c_j$ 改写成 ${c_i+1,c_i+2,...,c_j}$ ,这样对于任意两条线段都不会产生交(可以包含,即 $c_i=c_j$ )。

    改写一下问题,令 $d_i=max{c_{i-1}+1,c_{i-1}+2,...,c_i}$ ,那么 $[l,r]$ 的答案等价于 ${max{a_l,a_{l+1},...,a_{l+c_l-1}},d_{l+1},d_{l+2},...,d_r}$ 。

    $c_i$ 维护十分简单,拿平衡树维护即可。

    考虑 $d_i$ 的实质,在维护 $c_i$ 的同时找到对于每个 $d_i$ 做出贡献的点。

    事实上即为带删除点的楼房重建,时间复杂度 $mathcal O(nlog^2 n)$ 。

    但有更优秀的做法,还是考虑 对于每个点连向后面比他大的点建树倍增,那么仅需要维护单点,路径求和。

    时间复杂度 $mathcal O(nlog n)$ 。


     

    总结

    Day1

    酒店早饭好评,啥吃的都有。早上先去报道,发现北京来的几乎就是北大附的校队(感觉又要被打爆了。

    发现可以试机,于是与 $lmj$ 随便找了个机房。为啥没有计算器啊,但空调很舒适?

    试机有两道题(后来听说是 $CTTspace 2020$ 的题)

    感觉第二题不太可做,于是想了想 $A$ 。

    想了不久发现 $A$ 是个诈骗题,但尽然不放 $log^2$ 过去,而且感觉要写许多个 $ST$ 表以及线段树。

    先写了个 $k=1$ ,不久后过了。于是改了改,直到 $10:30$ 依然没调过去(虽然就写了 $1$ 小时),于是就跑路吃饭去了。 

    写的过程中重新认识到了什么叫 $Dev$ 的过人之处! 

    下午考试,发现同桌竟是 $zhouzhuan$ ,好可爱的男孩子!

    开场后发现 $A$ 题好短,感觉是个奇怪定义的矩乘,$B$ 楼房重建加强,看起来就像我不会的,$C$ 竟是德州扑克,题面好长,不看了,还是去想 $A$ 吧。

    思考了 $2,3$ 分钟后发现可以算贡献,于是打了个表发现贡献的系数只有三种,可以矩乘优化。赶紧写,$30$ 分钟差不多就过了。

    于是就开始摸鱼了,又尝试看了看 $C$ 题题面,感觉还是太长了,弃了。

    于是花了几分钟写了个 $B$ 题 $7$ 分暴力,朝着楼房重建的做法那里想了想发现啥都不会(甚至连最基本的朝后面最大值连边这初二我都曾经知道的方面都没想到),错失第二档暴力分的机会。

    那还是去开 $C$ 吧,耐着性子看了好久题面终于读懂了,发现前面 $s=3/2$ 的都是送的,于是就在那里疯狂的写。

    由于是大模拟于是便边写边调,写到了 $3:30$ 一遍写过了 $s=3$ ,非常高兴!感觉 $s=2$ 的改吧改吧就能过去。

    悲剧从此就诞生了,改着改着发现第二个包竟然 $WA$ 了?但这题咋调啊,是我计算输赢错了还是 $minspace max$ 错了根本就不知道,调到收卷也没发现错误,人傻了!!!(咋感觉和实际赛差不多啊!)

    $lmj$ 没写 $C$ ,$B$ 题写了第二个包,于是比我高了 $1$ 分。其他人也没问就回宾馆颓废去了。

    Day2

    上午先大合照,告知了 $ ext{NOI 2021}$ 考试地竟在其他学校,被诈骗了!所以有参观比赛场地这一项啊,恍然大悟(

    坐公交车去参观,感觉这学校好有钱,楼都好新,校园好美。

    体育馆也十分优秀,清华同方键盘好评,还顺便参观了女生宿舍(

    下午开赛前发现坐旁边的竟是个妹子。

    一棵树好评,看完题目以为 $k$ 会很大感觉不太可做,拉到底下发现 $kin{0,1}$ ,诈骗啊! 

    不太冷静的先冲了波 $k=0$ ,并没有计算边的贡献,而是 $dis(a,b)=dis_a+dis_b-2dis_{Lca}$ 做的,后面也是这样想的。

    感觉和多校联训的题差不多,两棵树拼一起的贡献仅有第一棵树自身/第二棵树自身/连接 $(u,v)$ 的边以及第一棵树到 $u$ 的距离和与第二棵树到 $v$ 距离有关。

    于是打算先写了个 $mathcal O (n^2)$ 的暴力,写了一发 $WA$ 了,改了改还是 $WA$ 的,顿时自闭。

    不太冷静的分析一会儿发现一个地方少乘了子树大小,改了一下就拿到了 $mathcal O(n^2)$ 的分数,就已经过了 $2$ 小时了。

    本身打算弃掉最后换根,感觉挺难写的,但还是痛苦的写了写,差不多 $15:30$ 过了。

    看了下 $C$ 题感觉要积分,发现自己啥都不会于是就开了 $B$ 题。

    到考试结束也没编出来贪心,敲了个暴力 $dp$ 以及猜了 $c=1$ 的贪心,二分加线段树优化就过去了。

    最后 $C$ 题输出 $0/1$ 拿了 $10$ 分,感谢出题人。

    问了问大家考试情况,感觉大家都会 $B$ 的贪心,又被吊打了。

    感觉两天垫底了,于是会酒店就开始颓废,啥都没干。

    Day3

    发现自己进了面试,离谱。

    第一个面试的老师十分友善,没问啥实质性的问题。第二个面试的老师十分严肃,感觉要没。

    中午继续颓废。

    果然下午发奖拿了个安慰奖就跑路了。

  • 相关阅读:
    Exection throws和throw
    Exection(二)
    JAVA-Exception
    IDEA初见---输出HelloWorld,并打包成jar包
    Centos6.5安装Tomcat
    Centos6.5下装ZooKeeper
    LInux下装jdk
    python作业高级FTP
    tcp黏包
    计算器
  • 原文地址:https://www.cnblogs.com/si-rui-yang/p/14791884.html
Copyright © 2011-2022 走看看