学习日志2
WC大爆炸.在FJ这种现在大概只能算中等强度的省份垫大底,在全国排名更是翻了几十页都找不到的那种.
为了拯救这只菜鸡.继续努力吧.
2021.2.7到春节
Need to do
- HNOI2018(完成)
- DDP学习(完成)
- 完成HNOI2018的简要题解和总结(完成)
- 学习并完成blog[一类线段树乱编(维护一类与前缀max,后缀max有关的信息)](完成)
- SDOI2017切树游戏
- CF,AT选做(完成4题)
- 补洛谷月赛题
- FWT理解
upd 2021.2.7
1.[HNOI2018游戏](看了题解)
- 题目几个有用的性质:
- I.如果y<=x,只有可能左边到右边,反之只有可能从右边到左边(想出)
- II.每个点能到的显然是一个区间[L,R],于是可以预处理出来,然后直接回答询问(没想出)
- III.设一个点i的到达区间为[$L_i$,$R_i$],那么你假设从x出发,每到这样一个点i,显然就可以用$L_{i}$,$R_{i}$来更新x的到达区间,即i能到的,x都能到(没想到)
- 于是我们可以先把中间没有锁的点缩成一个大点,利用性质(I)连一张有向图,然后根据拓扑顺序的倒序,利用性质III,来拓展继承那个到达区间,均摊下来就是O(n)的.
upd 2021.2.8
2.[HNOI2018排列](看了题解)
- 令$f_i$ = $p^{-1}_{i}$,容易发现f也是一个排列,并且题目这个鬼畜的条件就变成了:if($a_{i}$ = j),then $f_{i}$ > $f_{j}$,求max($\Sigma$ $f_{i}$ * $w_{i}$)
- 令i向j连边,于是问题变成了经典的,给一棵树,父亲比儿子小(或者可以看成从小到大安排权值,但父亲要比儿子先选),求满足这一限制条件下的某个极值
- 很像上周jmr老师讲的那题[ACG023F] 01 on Tree,都是我们考虑每个节点上有一串的序列(初始时就是自己的权值),然后贪心地合并到父亲身上,直到只剩根节点
- 怎么贪心呢?依然考虑临项交换,可以得到按照$\frac{w_i}{siz_{i}}$从小到大贪心,$siz_{i}$是这个节点被合并上来的序列有多长.
- 关于序列可以这样理解,序列表示如果你选了这个子树,你的顺序会是怎么选的,这种思想似乎适用于树上对父亲儿子之间偏序有一定限制,且贡献可以拆开来计算的题目.
3.[HNOI2018毒瘤](自己想出)
- 算是一个经典trick吧,因为听myh鸽鸽讲过所以会做
- 就是当一张图,m-n很小的时候,你可以先建一棵树,然后对多出的边在的点建虚树,在原树中预处理虚树的边
- 像本题对于边(u - > v)就是预处理一个二元多项式$ax + by + c$的系数a,b,c;$x$,$y$分别表示dp[v][0],dp[v][1],即v点选或者不选时,子树的最大独立集
- 然后每次就可以在虚树上乱搞了,因为虚树上的点大概只有2*(m-n).远远小于n(题目性质保证)
4.[HNOI2018寻宝](看了题解)
- 思维题,感觉没什么步骤,重点在于要发现题目的性质
- 思考方向大概是:(I)分析&,|的性质,
- (II)思考怎么才能使结果是1/0
- (III)发现对于每一位要把操作序列转化成0/1二进制数,然后转化成比大小的问题
5.[HNOI2018转盘](自己想出步骤1,但线段树维护前缀max相关信息部分看了题解)
- 首先容易发现与其在中间等,不如在起点等,所以最优解一定是在起点等一段时间,然后不停地走一圈.
- 考虑拆环为链,令$a_i$ = $T_{i}$ - i,那么$ans$ = $min^{n}_{i = 1}$($max^{2*n}_{j = i}$ $a_{i}$ + i) + $n - 1$
- 接下来的部分,参见blog一类维护前后缀max相关信息的线段树
upd 2021.2.13
家里这边鞭炮从10号放到现在没停过,我手机的bilibili和电脑的steam也从那时起开到现在没停过
人都傻掉了
upd 2021.2.14
情人节,没有女票很难过