回文子序列 ssl2662 暴力
来源:互联网 发布:死神vs火影月改优化版 编辑:程序博客网 时间:2024/06/11 00:38
Description
回文序列是指左右对称的序列。例如1 2 3 2 1是回文序列,但是1 2 3 2 2就不是。我们会给定一个N×M的矩阵,你需要从这个矩阵中找出一个P×P的子矩阵,使得这个子矩阵的每一列和每一行都是回文序列。
Solution
果然竞赛要有信仰→
任意一个回文的矩形都是可以由小一圈的回文矩形+最外圈上都是回文串,那么这样子
Code
#include <stdio.h>#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)#define min(x, y) (x)<(y)?(x):(y)#define N 301int rc[N][N];bool isPr[N][N][N];int main(void){ int n, m; scanf("%d%d", &n, &m); rep(i, 1, n){ rep(j, 1, m){ scanf("%d", &rc[i][j]); isPr[i][j][1] = 1; } } rep(i, 1, n - 1){ rep(j, 1, m - 1){ if (rc[i][j] == rc[i + 1][j] && rc[i][j] == rc[i][j + 1] && rc[i][j] == rc[i + 1][j + 1]){ isPr[i][j][2] = 1; } } } int ans = 0; int mn = min(n, m); rep(k, 1, mn){ rep(i, 2, n - k){ rep(j, 2, m - k){ if (isPr[i][j][k]){ bool flag = false; for (int l = j - 1, r = j + k; l <= r; l += 1, r -= 1){ if (rc[i - 1][l] ^ rc[i - 1][r] || rc[i + k][l] ^ rc[i + k][r] || rc[i - 1][l] ^ rc[i + k][l] || rc[i - 1][r] ^ rc[i + k][r]){ flag = true; break; } } if (flag){ continue; } for (int l = i - 1, r = i + k; l <= r; l += 1, r -= 1){ if (rc[l][j - 1] ^ rc[r][j - 1] || rc[l][j + k] ^ rc[r][j + k] || rc[l][j - 1] ^ rc[l][j + k] || rc[r][j - 1] ^ rc[r][j + k]){ flag = true; break; } } if (!flag){ isPr[i - 1][j - 1][k + 2] = 1; if (k + 2 > ans){ ans = k + 2; } } } } } } printf("%d\n", ans); return 0;}
1 0
- 回文子序列 ssl2662 暴力
- 回文子序列 ssl 2662 暴力
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子序列
- 最长回文子串、回文子序列、公共子序列
- bzoj2124 等差子序列【暴力】
- (动态规划)最长回文子序列、回文子序列个数
- (动态规划)最长回文子序列、回文子序列个数
- 最长回文子串(暴力法)
- hdu4745 最长回文子序列
- hdu1513 最长回文子序列
- 最大回文子序列数
- nefu1037回文子序列数
- HDU5547 Sudoku(深搜DFS)(2015CCPC)
- 【linux】ubuntu 安装、配置与启动tftp服务
- HDU 3709 Balanced Number(数位dp)
- 跟我一起学OpenGL-矩形之index buffer的使用
- 第一次出去比赛(河工大校赛4.22)
- 回文子序列 ssl2662 暴力
- SSL1585 取数游戏(递归)
- B
- Linux中环境变量文件及配置
- vim配置
- 【IMWeb训练营作业】Select 组件
- 深入浅出——搞懂卷积神经网络的过拟合、梯度弥散、batchsize的影响的问题
- 9 Best Torrent Downloader
- 4月25日,ExampleHashMap,每日20行。