NOIP2022 T1 题解

\(P8865\)

\(1\) 输出\(0\) \(0\)骗分,期望得分\(1pts\)

\(2\)~\(3\) 写你喜欢的打表,可能的图案并不多,期望得分\(6pts\)

\(4\) 枚举\(x1\)\(x2\)\(C\)进行判断即可,\(F\)看一下有多少种\(x3\)即可,复杂度\(O(tn^2)\),期望得分\(10pts\)

\(5\) 好吧我实在没看出它有啥特殊做法。应该是相对于正解不用预处理\(right\)了,还是看正解吧。期望得分\(14pts\)

\(6\) \(F\)是不可能了。\(C\)你就枚举左边的竖线在哪两个\(4i\)之间的哪一列。竖线上有一个\(1\)都不行。然后看横最多能伸多长,可以预处理。复杂度\(O(tnm)\),期望得分\(20pts\)

\(7\) 枚举\(x1,x2,x3,y0,y1,y2\),暴力判断,复杂度\(O(tn^3m^3(n+m))\),期望得分\(30pts\)

\(8\) 用前缀和进行判断,复杂度\(O(tn^3m^3)\),期望得分\(36pts\)

\(9\)~\(10\) 好开始解说。考虑转变一下思路,我们能不能一枚举就枚举可行的方案,不判断了呢?可以!枚举\((x1,y0),(x2,y0)\),确保内部没有\(1\),然后向右伸展枚举\(y1,y2\),直到被\(1\)挡住或到达边界为止。\(x3\)可以向下伸展。枚举找到\(y1\)\(y2\)\(x3\),复杂度\(O(tn^2m(n+m))\),期望得分\(50pts\)

\(11\)~\(14\) 容易发现\(y1\)\(y2\)\(x3\)可以预处理,预处理\(right_{i,j}\)表示\((i,j)\)右面第一个\(1\)\(down_{i,j}\)表示\((i,j)\)下面第一个\(1\),复杂度\(O(tn^2m)\),期望得分\(80pts\)

\(15\) 我们可以对\(right_{i,j}-j-1\)进行一个前缀和,这样就只用枚举\((x1,y0)\)了。复杂度\(O(tnm)\),期望得分\(86pts\)

\(16\) 好终于是正解了(想暴力想得\(captainOI\)脑子疼)。可以对\((down_{i,j}-i-1)\times (right_{i,j}-j-1)\)
也做一个前缀和,这样就可以处理\(F\)了。复杂度\(O(tnm)\),期望得分\(100pts\)

最后来一句,相信\(NOIP\),能力到了,就一定能考出来!

posted @ 2025-08-20 19:03  captainOI  阅读(14)  评论(0)    收藏  举报