1119总结
1119
挂大分
T1
蠢做法
对于每一行,检查有哪些位置对是合法的,如果序列已经有序,那么先扔到后面去。
不难发现每一行合法位置对数是 \(O(n)\) 的,set 处理集合求交即可。
由于处理的是无序对,但 set 是有序的,所以要把正反都插进去。
局部数组不要越界
n,m 不要写反。
优秀做法
考虑将某一行排序,看看有变化的位置。
这样的位置有且仅有两个,检查一下每一行的变化位置是否会相同就可以了。
优先处理有变化的行。
T2
首先发现 \(B,C\) 等价,变成 01 串问题,每一个 \(0\) 的前面是自由的,可以自由控制 \(1\) 的个数,\(0\) 不可减少,\(0\) 的增加。如果 \(T\) 的末尾为 \(1\),那么 \(S\) 的末尾需要对应有那么多的 \(1\),将这些抵消,\(T\) 的末尾就是 \(0\)。
分类讨论,如果 \(S\) 的末尾的 \(1\) 模三不余 \(0\),那么还需要添加两个 \(0\),此时如果 \(0\) 多了或者模 \(2\) 不相同则无解,否则有解。
有边界情况,如果 \(S\) 中本来没有 \(0\) 并且 \(1\) 也被抵消完了,那么不能额外的生成 \(0\)。
我实现的时候计算连续 \(0\) 个数的时候没有考虑左边界,还挂了一下。
T3
题意轻重边,见 树上领域修改问题
T4
n^2
如果 \(O(n^2)\),那么考虑以插入的方式构造排列,已经是一个被积累起来的套路了,场上成功写出。