2017-Sp324-team2
从 Trac 迁移的文章
这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。
原文章内容如下:
== 流水账 ==
=== chenjb ===
=== oipotato ===
=== subconscious ===
== 题解 ==
* A:计算每个叉积的贡献,组合数,long double存得下。
* B:显然完全一样可以;在不满足这个条件的前提下,如果a全是x,显然不可以,接下来观察终止状态,显然某行被敲过,还能做到两个x,所以对于终止态,任意一对同行或同列的x,都必须不能被敲,然后把它们锁定,对于那些只有行或者列其中之一被锁定的格子,如果是x的话,在未被锁定的格子中,有O的前提下,是能被变成O的,剩下的问题就是一个矩阵每行每列最多只有一个X,然后由于之前判断的限制,它不会是一个纯X的矩阵,所以一定有个O,我们砸一下这个位置,就可以接着把同行同列都砸一下,然后全局只剩一个X,显然可以把它移动到终止态最左边第一个X,终止态剩下的X直接敲出来即可。
* C:
* D:类欧几里得。
* E:mask枚举行,预处理列之间单调关系,2^r^*rc dp统计即可。
* F:
* G:扫描线求出横线和纵线的交点数量,和4*n比较。
* H:
* I:考虑当前最大字母的联通块数量,如果能用当前操作数量解决,就贪心拿掉,递归到下一层;否则考虑只取k个块,维护k-max的和,同时剩下部分是两个后缀比较,sa或者hash都可以。注意考虑递归中k=0的情况,以及当开头是一段最大字母的时候,要合理地白嫖。
* J:暴力。
* K:
* L:答案是n-1-最大匹配,第二行输出最大匹配非必需点,从不在匹配上的点走交错点就能把同侧的判掉,两边各做一次。
* M:对于一个序列,如果左边一半和右边一半完全相同,答案是左边答案*2,如果左右两边完全没有交集,答案是两边相乘,否则是0。
流水账
chenjb
oipotato
subconscious
题解
- A:计算每个叉积的贡献,组合数,long double存得下。
- B:显然完全一样可以;在不满足这个条件的前提下,如果a全是x,显然不可以,接下来观察终止状态,显然某行被敲过,还能做到两个x,所以对于终止态,任意一对同行或同列的x,都必须不能被敲,然后把它们锁定,对于那些只有行或者列其中之一被锁定的格子,如果是x的话,在未被锁定的格子中,有O的前提下,是能被变成O的,剩下的问题就是一个矩阵每行每列最多只有一个X,然后由于之前判断的限制,它不会是一个纯X的矩阵,所以一定有个O,我们砸一下这个位置,就可以接着把同行同列都砸一下,然后全局只剩一个X,显然可以把它移动到终止态最左边第一个X,终止态剩下的X直接敲出来即可。
- C:
- D:类欧几里得。
- E:mask枚举行,预处理列之间单调关系,2r*rc dp统计即可。
- F:
- G:扫描线求出横线和纵线的交点数量,和4*n比较。
- H:
- I:考虑当前最大字母的联通块数量,如果能用当前操作数量解决,就贪心拿掉,递归到下一层;否则考虑只取k个块,维护k-max的和,同时剩下部分是两个后缀比较,sa或者hash都可以。注意考虑递归中k=0的情况,以及当开头是一段最大字母的时候,要合理地白嫖。
- J:暴力。
- K:
- L:答案是n-1-最大匹配,第二行输出最大匹配非必需点,从不在匹配上的点走交错点就能把同侧的判掉,两边各做一次。
- M:对于一个序列,如果左边一半和右边一半完全相同,答案是左边答案*2,如果左右两边完全没有交集,答案是两边相乘,否则是0。