3.4模拟赛总结
Posted Flame♡
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.4模拟赛总结相关的知识,希望对你有一定的参考价值。
烦,白天犯困睡不醒,中午被人吵得睡不着,也不是不能理解,毕竟素质也只有那么点
欸呀,又挂了20pts,恼…
时间安排
7.30-8.30
认真看了三道题,感觉T1线段树优化,T2结论性,组数dp,T3数据结构?想了个T1的假做法
8.30-9.00
认真打瞌睡顺便思考怎么能让T1边真
9.00-9.40(不到)
感觉应该先把能写的东西写了,于是思索了一下T2,写了代码,开始打表
9.40-10.20(左右?)
写了T3的40
10.20-11.00(不到)
写了T1的暴力 顺便继续思索T1的正解
11.00-12.00
思索正解 顺便检查
题目分析
T1
思考一个假做法
考虑线段树上每个节点n个虚拟点,代表 i i i 号点要连向的点
在叶子处,例如存在一条边 x − > y x->y x−>y那么在 x x x 的位置把值设成 y y y
然后非叶子处,直接根节点 的 i i i 号点向左右子树的 i i i 号点连边
这样处理上限是 O ( n m ) O(nm) O(nm) 的,加上一些小优化之后到不了这个上限
然后考虑,对于一个询问 ,直接在线段树上区间连边,复杂度 O ( n q l o g m ) O(nqlogm) O(nqlogm)
貌似很对,但有一个小问题
tarjan的复杂度是 O ( n + m ) O(n+m) O(n+m) 的
所以就g了qwq
T2
什么,我只会打表
2 n ( n − 1 ) / 2 2^n(n-1)/2 2n(n−1)/2枚举后,大力dfs跑不重复最长路
T3
(不知道为什么假了,我哭!)
考虑分开做,首先,区间异或=前缀异或后,选两个位置进行异或
那么我们可以先处理出来哪些区间是受关注的区间
接下来的问题就是对于询问区间 i i i , 使得对于查询区间 j j j 有 l j < = l i , r i < = r j l_j<=l_i,r_i<=r_j lj<=li,ri<=rj,把这些区间i整体加上一个值,直接按左端点从大到小排序后,右端点从小到大排序,查询区间在询问区间之前
然后维护出来每个查询区间之后,考虑直接变成树状数组上差分修改,单点查询
我裂开了,加了负数之后变成负的,忘输出的时候+mo再%mo了 qwq
以上是关于3.4模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章