首页 > 其他分享 >20230721巴蜀暑期集训测试总结

20230721巴蜀暑期集训测试总结

时间:2023-07-21 20:46:12浏览次数:36  
标签:cnt 压入 复杂度 texttt 暑期 区间 操作 20230721 集训

T1

似乎想复杂了。搓了一个 \(O(Q\sqrt{n\log n})\) 的做法,成功跳过正解。结果考后发现普通分块就可以 \(O(Q\sqrt n)\)。而且似乎还 WA 了一些点。

根据题意可以发现 \(b_i\) 为 \(1\) 当且仅当 \(i\) 在二进制下有奇数个 \(1\)。这个可以用来快速求 \(b_i\)。

再观察性质,发现 \(b\) 的构成可以看成初始有一个 \(0\),然后不断将自身取反的结果接到后面。如:

\[\texttt{0}\longrightarrow\texttt{01}\longrightarrow\texttt{0110}\longrightarrow\texttt{01101001} \]

所以 \(b\) 可以看成是若干个长度为 \(2\) 的整数次幂的串正反拼接起来的。那么考虑将这个长度固定,假设为 \(B=2^k\)。

记录一个 \(f_{i}\) 表示 \(a\) 中区间 \([i,i+B-1]\) 与 \(b\) 中区间 \([0,B-1]\) 有多少个不同的位置。反串直接用长度减去即可。

对于修改操作,每次只会影响 \(f\) 中的 \(B\) 个位置,暴力处理单次复杂度 \(O(B)\)。对于查询操作,开头的整块直接用 \(f\) 数组统计答案,单次复杂度 \(O(\frac nB)\),末尾散块暴力计算,单次复杂度 \(O(B)\)。\(B\) 取最靠近 \(\sqrt n\) 的 \(2\) 的整次幂。复杂度 \(O(Q\sqrt n)\)。

T2

时间不太够,\(30pts\) 暴力都没有调出来。此题直接爆 \(0\)。这个正解感觉也不是太难,但还是需要一些时间冷静思考的,但是赛时时间剩的不多就不敢想太深了,生怕陷进去导致暴力没时间打。

\(4\) 个变量,不能枚举,考虑逐一确定。

先考虑 \(k\) 的限制。将问题放到二维平面上,有点 \((i,a_i)\)。扫描线从下往上扫,将扫到的点作为 \(d\),它会对右边扫到过的点作为 \(l\) 的方案产生 \(1\) 的贡献代表多了一种 \(d\) 的选择。然后这些 \(l\) 会对右边未扫到的点作为 \(r\) 的方案产生 \(1\) 贡献。最后枚举 \(u\) 来计算答案。最终统计每个 \([1,k]\) 中的 \(u\) 的答案。

考虑将中转的 \(l\) 跳过,让 \(d\) 直接对 \(r\) 产生贡献,那么贡献为横坐标在 \(d\) 和 \(r\) 之间且被扫到过的点数。

那么如何计算这个点数呢?观察发现它可以表示为 \(cnt_r-cnt_{d-1}\) 的形式,其中 \(cnt_x\) 表示扫到过的横坐标小于 \(x\) 的点数。

\(cnt_{d-1}\) 每次可以直接区间加,但 \(cnt_r\) 是会变化的。再观察一下发现每次 \(cnt_r\) 会被加入 \(r\) 的贡献,然后 \(cnt_r\) 自己会 \(+1\)。所以最终会对 \(r\) 贡献一个等差数列和,最后再加入即可。

最终时间复杂度 \(O(n\log n)\)。

T3

当时一看到询问操作序列区间就直接懵了,甚至还要操作序列区间修改,就是本能抵触,也没想到去分析一些性质转化问题啥的。好在最低档暴力还是比较好打的,没用多久拿了 \(20pts\)。但其实最后打 T2T3 的时候就已经只剩 1h 出头,主要就是前面思考三道题和 \(T1\) 调 + 卡常用了很多时间。

可以观察到几个性质:

  • 每个弹出操作对应的压入操作是固定的,可以通过括号序列确定。

  • 一个压入操作只会被之前相邻的一段连续弹出操作影响。故可以从他们对应的压入操作向这个压入操作连边形成一棵树(根为 \(n+1\))。染蓝色的过程就是对于每一个蓝色点,将它到根的路径上所有点染成蓝色。

  • 连边不会交叉。也就是不存在两条边 \((a,b),(c,d)\) 满足 \(a<c\) 且 \(c<b<d\)。

由于连边不会交叉,所以一段区间的 dfs 序是连续的。考虑如果询问区间是连通的,那么答案就是蓝点构成虚树的大小。那么如果不连通,考虑加一条从 \(dfn_u=dfn_l-1\) 的点 \(u\) 到根链将他们串起来最后再减去 \(u\) 的贡献。

可以线段树维护区间内蓝点以及相邻蓝点 LCA 到根的距离。

标签:cnt,压入,复杂度,texttt,暑期,区间,操作,20230721,集训
From: https://www.cnblogs.com/dks-and-xiao-yu/p/17572359.html

相关文章

  • 集训总结(经常鸽)
    7.13今天上午主要是把cdq和treap复习了一下,顺便写了两个博客来记录。下午一直在学斜率优化,先是学了单调队列优化,写了 【P4954[USACO09OPEN]TowerofHayG】【P2254[NOI2005]瑰丽华尔兹】然后就开始学斜率优化,学完之后写了【P3628[APIO2010]特别行动队】这道题真正......
  • “范式杯”2023牛客暑期多校训练营1
    D:Chocolate大意:给定一个n*m的方格,上面摆放着巧克力,k和w在玩一个游戏,规定k先行,在每个回合内玩家可以吃掉坐标(x,y)内所有的巧克力(i<=x&&j<=y),在他们回合内至少吃掉一块巧克力,谁最后吃巧克力谁就输了,问赢家是谁做法:一个很经典的博弈论,chomp游戏,这个游戏经过证明可以得到先手必赢,......
  • 七月份集训总结
    七月份集训总结前言今天被拉到办公室里头一个个总结了一下集训的收获和感想。emm,是该总结总结了。感想自己马上就要从准高二成为真正的高二学生了,时间真的蛮快的。不知道去年的霜木看到今天的自己,还会不会选择竞赛呢?收获&不足平衡树的一些应用KD-Tree(目前只会静态的模板......
  • 2023夏季集训D1-贪心二分
    2023夏季集训D1贪心二分0x00前言24OIFXJ大佬来给我们讲课OrzOrz.讲课好难TAT.0x10贪心0x11经典贪心写了BestCowLineG/S和田忌赛马一位小伙从同学那里要来了一份BestCow代码Debug但没有发现代码没有输入,这是他思路3小时后发生的hack.田忌赛马太......
  • 暑假集训随笔2 主席树/二维树状数组
    P4514上帝造题的七分钟题意维护对二维平面上的矩形区域各元素进行加法以及对矩形区域求和链接:https://www.luogu.com.cn/problem/P4514思路通过二维树状数组维护的二维前缀和利用差分实现矩形区域的区间加法与区间求和。具体而言,二维的前缀和可以仿照一维的前缀和进行定义......
  • 20230719巴蜀暑期集训测试总结
    T1赛时打了一个\(O(n^3)\)\(16pts\)暴力和一个似乎可以过一个\(20pts\)特殊性质但其余无正确性的贪心。结果出来发现特殊性质挂了一个点,另一个地方还莫名其妙对了。说明特殊性质挂掉了,如果运气不好可能就挂到\(16pts\)了。考后看题解发现\(O(n^2)\)其实也是不难想的,有点......
  • 【学习记录】2023年暑期ACM训练
    学习记录7月16日集训正式开始前一天,搬东西到了机房,在我的老古董笔记本上配置好了环境。这半个月来基本没有写代码,目前非常生疏。晚上在VJudge上拉了个热身赛,做了些简单的签到题,稍微找回了些手感。有一道计算几何的题目有思路,但是卡在了代码实现上,毕竟还没有系统学过。7月17日&......
  • “范式杯”2023牛客暑期多校训练营1 蒻蒟题解
    A.AlmostCorrect题意:给定一个01串,要求构造一系列排序操作(xi,yi),使得经过这些排序操作后可以使与给定01串等长的所有其他01串完全排好序,而给定的01串无法完全排好序Solution构造题我们考虑到对0和1的位置进行统计,统计得出最左边的1的位置为l,最右边的0的位置为r我们进行三次......
  • 集训游记 7.19-7.20 图论
    最小生成树MSTP5994[PA2014]Kuglarz考虑连边\(i,j\)表示花费代价知道区间\([i,j)\)的奇偶性.容易发现\(i,j\)联通就可以发现表示出\([i,j)\).考虑最终局面,一定要推出每个\([i,i+1)\)的奇偶性.要求每对\([i,i+1)\)联通.即整张图联通.最小生成树k条白边最小生成树......
  • 20230718巴蜀暑期集训测试总结
    T1做了\(3h\),时间复杂度不对,小样例都还有一个没过。考虑容斥,不连通的情况枚举\(1\)号点所在连通块。设\(f_{S,i}\)表示\(S\)连通且选了\(i\)条边的方案数。设\(inb_s\)表示\(S\)内部的边数。那么有转移:\[f_{S,i}=\binom{inb_S}i-\sum_{T\subsetneqqS,1\inT}......