题意:如图一个$n \times m(n,m\le500)$的方格图,一共有$(4 n m - 2n - 2m)$条边,起点在左上角,每条边只能经过一次,给出一个恰好经过$k$条边的方案。方案由不超过$3000$条指令组成,每条指令为执行一个长度不超过$3$的字符串$(L,R,D,U)$指定次数;或判定无解。
题解:显然$k>(4 n m - 2n - 2m)$则无解。否则,可以先把每一行走遍,然后把每一列走遍,最后再回到左上角,途上步数到了就exit(0)即可。写完代码看看循环边界可以发现这样的指令条数为$3(n-1)+3(m-1)+2=3(n+m)-4<3000$,符合题意。
for(int i =1;i < n;i++) solve('R', m -1), solve('L', m -1), solve('D', 1);for(int i =1;i < m;i++) solve('R', 1), solve('U', n -1), solve('D', n -1);
solve('L', m -1), solve('U', n -1);
E
题意:给定一个$n \times m$的方格,每个点格子红蓝黄绿四种颜色,$q$次询问一个子矩阵,求其中最大的正方形使得这个正方形可以分成四个小正方形,且这四个小正方形的颜色左上、右上、左下、右下分别为全红、全绿、全红、全蓝。$(1 \leq n , m \leq 500, 1 \leq q \leq 3 \cdot 10^{5})$