NOIP2023模拟测试赛(二十八)

你也许也意识到了这件事,旅船是掩盖未来的虚像,战车正指引着我们的命运,硬币抛出之后,正逆的转换从未停止。前方是毁灭亦是重生。

T1 也许(may)

鬼畜的暴力。

对每个面进行 dfs,找到一个没有标记颜色的方块或者标记了相同颜色的方块则停止。

如果找到了不同颜色的方块,就代表此方块不能存在,删除,然后朝被标记这个方块颜色的几个面再次 dfs。

如果最终有颜色的面对应方块条为空,则 -1。

T2 意识(realize)

高斯消元

四个颜色 WRYB 分别对应 0123

mix 就变成异或和。

考虑 RY RB YB 怎么办。

拆位,当前颜色为 a1a0,RY 转化为 swap(a1 a0),RB 转化为 a1 ^= a0,YB 转化为 a0 ^= a1。

bitset 加速,\(O(\dfrac{n^2q}{w})\)

T3 硬币(coin)

首先随便打几个点模拟一下,然后发现最终一个连通块一定是一段区间,并且包含值域上一段相邻的点。

连通块之间区间不相交,值域区间也不相交。

转化为查询左边最小值大于右边最大值的分割的个数。

我们将相邻的两个数 \(a_i\)\(a_{i-1}\) 之间在值域上的一个半闭半开区间 \((a_i, a_{i-1}]\),区间加一。(值更大的一端闭。

此时会发现最终的分割点右边的最大值一定只被加了一遍。

就变成区间加,区间统计 =1 的个数。

直接统计 =1 不好统计,可以转化为统计最小值以及最小值出现次数(因为最小值不会比 1 更小)

最左端 \(a_0\) 要设成正无穷,最右端 \(a_{n+1}\) 设成负无穷

posted on 2023-08-23 11:15  Evan_song  阅读(245)  评论(0)    收藏  举报