\(T1\)
做法一:组合数
考虑将全排列减去不合法排列即可
做法二:双指针
用前缀和维护
\(T2\)
做法一:dp
记 \(dp_{i,j}\) 表示以 \((i,j)\) 结尾的正方形的最长边长,从 \(dp_{i-1,j-1}\) 转移过来即可。
做法二:二分
枚举左上角,二分边长,用二维前缀和判断合法性即可。
\(T3\)
做法:线段树上二分
板子,没什么细节。
考虑将全排列减去不合法排列即可
用前缀和维护
记 \(dp_{i,j}\) 表示以 \((i,j)\) 结尾的正方形的最长边长,从 \(dp_{i-1,j-1}\) 转移过来即可。
枚举左上角,二分边长,用二维前缀和判断合法性即可。
板子,没什么细节。