codeforces口胡记录

1194E. Count The Rectangles

题意:
2D平面上给出若干条垂直或水平的线段,求共构成了几个封闭的矩形。
题解:
大概就是先把每行每列先做一个简单的线段处理(处理成若干连续段),然后维护一个从下往上的扫描线,并且在扫的时候对每个横坐标维护在它上面是否有连续的竖直线段,对于每个横线段(长度为1,即两个横坐标之间)维护在当前的扫描线下,是否有水平线段覆盖了这一段。然后每当铺上一条水平线段,就进行一次统计。由于数据范围较小,(应该)只要保证统计的复杂度不劣于\(\mathcal O(len)\)即可。
复杂度大概是\(\mathcal O((n + V)V)\)

1194F. Crossword Expert

题意:
\(n\)个题, 按照第\(i\)题随机\(t_i\)\(t_i + 1\)秒钟完成, 总共有\(T\)秒时间, 求做题数期望。
题解:
最基本的想法是考虑对于一个01序列,考虑其贡献。但是我们会发现后面有些1是没有用的。
我们可以考虑枚举有多少个题多花了1s完成的。(即有用的1的个数)
实际上,枚举个数后,我们不需要关心这些多花的1s究竟在哪些题上,这很关键。
清楚这件事情以后,我们就可以列出式子:

\[f_i = \binom{m_i}{i} 2 ^ {n - m_i} \]

其中\(f_i\)为有\(i\)个题多花了1s完成的方案数,\(m_i\)为有\(i\)个题多花了1s完成,能完成的题数。
则答案即为

\[\frac {\sum_i m_i f_i}{2 ^ n} \]

1194G. Another Meme Problem

待填。

1197D. Yet Another Subarray Problem

题意:
给出一个序列,求最大的一个连续子序列\(a_{l..r}\),满足

\[\sum_{i = l} ^ r a_i - k \lfloor \frac {r - l + 1}{m} \rfloor \]

题解:
设前缀和数组为\(s\),即求

\[\max \{s_r - s_l - \lfloor \frac {r - l}{m} \rfloor\} \]

考虑\(m\)大小只有10,我们直接把原序列分成以\(m\)为大小的若干块。
大概做\(m\)次分块的样子,每次块起点不同。
对于一次分块,我们可以把每一块缩成一个点,设\(t_i\)是这个块内\(s\)的最大值,则本次分块的答案为

\[\max \{t_j - t_i - k (j - i)\} \]

这个问题显然\(\mathcal O(\frac {n}{m})\)可以做。
然后对每次分块的答案取最大值即可。复杂度是\(\mathcal O(nm)\)的。

1197E. Culture Code

题意:
你有n个俄罗斯套娃,已知每个套娃的容积和体积,问有多少个子集满足:
这个子集是一个极大子集,即不能再添加其它的套娃到这个子集里;
在上面的条件下子集的套娃之间的间隙和最小。
题解:
感觉不就是一道normaldp吗……?真是nmdp……

1197F. Coloring Game

题意:
给出\(n\)个游戏,每个游戏都是相似的。
其中第\(i\)个游戏上面有\(a_i\)个格子,并且某些涂上了颜色。
Alice和Bob进行博弈,初始时在每个游戏的最后一个格子都有一个棒子,行动规则是
1.不能将某根棒子移出边界;
2.只能将某个棒子向前移动\(\{1, 2, 3\}\)格;并且如果当前格子涂有颜色,会有一些限制,使得向前移动的步数集合是\(\{1, 2, 3\}\)的子集。
问有多少涂色方案,使得最终Bob(后手)必胜。取模。
题解:
考虑单个游戏的SG值。如果我们知道了第\(i\)个游戏SG为\(j\)的方案数\(f_{i, j}\),那么就可以轻松合并了。(SG的值最大只有3,这很重要)
考虑如何求出这个东西。
\(dp_{i, a, b, c}\)为第\(i - 2, i - 1, i\)个位置SG分别为\(a, b, c\)的方案数。
由于\(a, b, c \in \{0, 1, 2, 3\}\),所以可以把后面的\(a, b, c\)压成一维长为64的数组。
考虑从一个没有颜色的格子转移到另一个没有颜色的格子,转移始终是一样的,可以预处理出转移矩阵,然后做vector-matrix multiply
对于初始就有颜色的格子,由于比较少,只有1e3左右,所以直接在这些地方暴力转移即可。
复杂度是\(\mathcal O(n L ^ 2 \log V + m L ^ 2)\)。其中\(L = 64\)为矩阵大小。

1190C. Tokitsukaze and Duel

题意:
一个01序列,Alice和Bob进行游戏,轮流操作,每次可以把连续\(k\)个全部变成0或1(\(k\)是常数),最后把序列全变成0或1的人获胜。
问先手必胜还是后手必胜还是平局。
题解:
首先,如果Alice第一次操作后没有赢,那一定没机会赢了,因为Bob可以做无用操作,使结果不劣于平局。
除了这种情况,只有Bob可以在自己的第一次操作就赢下游戏。
那么Bob能否在自己的第一次赢下游戏,条件就是Alice第一次进行任意操作都是必败操作。
即对于Alice的任意一种操作,如将\([i, i + k -1]\)变成0,那么要保证,区间\([1, i - 1]\)\([i + k, n]\)这两个区间中有且仅有一个区间有1。
总复杂度大概可以做到线性。

1190D. Tokitsukaze and Strange Rectangle

题意:
平面上有若干点,求用一个U形框一些点,问能框住的点集的种类数。
其中U形是两条竖直射线和一条水平线段。
题解:
考虑从上向下枚举纵坐标,统计出纵坐标在当前扫描线上的点,横坐标有多少种,设为\(s\)
可以说,答案的一部分就是\(\binom {s + 1}{2}\),但是可能重复了统计了上一次扫描线统计(即上一次枚举纵坐标)的点。
设有\(t\)种横坐标是恰好在当前扫描线(枚举当前纵坐标)之前就存在的,则要减去\(\binom {t + 1}{2}\)的贡献。
直接上线段树+扫描线可以做到\(\mathcal O(n \log V)\)。当然也可以先离散化一下。

1190E. Tokitsukaze and Explosion

待填。

1190F. Tokitsukaze and Powers

待填。

posted @ 2019-07-30 11:15  psimonw  阅读(237)  评论(0编辑  收藏  举报