题目

n*n(n<=1e3)的全小写字母矩阵,求图中的最大对称子矩阵的边长

其中对称子矩阵的对角线是从右上角到左下角

bca
ebd
ghi

如上例,以ce为轴,应当输出2

题解

kuangbin的基础dp,软磨硬泡总算刷完了

枚举每个点,把每个点当左下角来看,dp[i][j]从其右上的dp[i-1][j+1]来转移,

转移时,暴力判断本列上分和本行右边能不能扩展,

如果能扩展到对应位置,就是右上的子矩阵规模+1

O(n^3)没敢莽,但赛后暴力了一下n=1e3的全a矩阵,计算量约在3e8,5s足矣

代码

#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int N=1e3+10;
char s[N][N];
int n,dp[N][N];
//复杂度在最坏情况下O(n^3)
//1e3个全a字母 计算量约在3e8 单组样例可以接受
//计算次数最坏情况下约为(2*n-1)*1+(2*(n-1)-1)*2+...+(2*1-1)*n
//敢写敢过 榜上一片过时 先冲一发朴素想法
int main()
{while(~scanf("%d",&n)&&n){for(int i=0;i<n;++i)scanf("%s",s[i]);int ans=1;//从右上角起 向左dp 向下dp for(int i=0;i<n;++i){for(int j=n-1;j>=0;--j){dp[i][j]=1;if(i==0||j==n-1)continue;int mx=dp[i-1][j+1];//暴力比较[i][j] 该列内该位置以上 和 该行内该位置以右 for(int k=1;k<=mx;++k){if(s[i-k][j]==s[i][j+k])dp[i][j]++;else break;} ans=max(ans,dp[i][j]);}  }printf("%d\n",ans);}return 0;
} 

hdu2859 Phalanx(线性dp)相关推荐

  1. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  2. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  3. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  4. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  5. CodeForces - 456C Boredom(线性dp)

    题目链接:点击查看 题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何 ...

  6. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  7. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

  8. CH 5102 Mobile Service(线性DP)

    CH 5102 Mobile Service \(solution:\) 这道题很容易想到DP,因为题目里已经说了要按顺序完成这些请求.所以我们可以线性DP,但是这一题的状态不是很好设,因为数据范围有 ...

  9. 动态规划 —— 线性 DP

    [概述] 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题.区间DP等有固定的模板. 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式 ...

最新文章

  1. 某33岁国企程序员求助:目前税后60+,工作975,拿到蚂蚁p7offer,3.8k,6200期权,有必要去镀金吗?...
  2. openstack-neutron基本的网络类型
  3. 【leetcode】931. Minimum Falling Path Sum
  4. 2022-03-07 学习docker开发vue前端
  5. [转载] html转word table样式_[Python02] Python-docx包的使用,快速处理 Word 文件!
  6. python随机数据库_关于Python的随机数模块,你必须要掌握!-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...
  7. 进不去系统,解决办法
  8. Pyqt之QApplication
  9. java sql编写教务系统_教务管理系统的设计与实现(SQLServer)
  10. quartus dcfifo操作
  11. 自律的力量 No Excuse: the power of self-discipline
  12. 几个常见的 Socket 连接错误及原因[转]
  13. matlab绘制蔓叶线,powerdraw
  14. 面向过程、面向对象 的模型和方法
  15. AUTOCAD——连续标注
  16. 彻底卸载MariaDB
  17. 你不知道的腾讯、百度、网易、华为笔试、面试的经过
  18. matlab声场仿真实例,丹麦理工大学MATLAB编写的超声声场仿真软件
  19. 转换idx+sub字幕到srt字幕的一个小技巧
  20. git 创建一个新的空的branch

热门文章

  1. ES集群可视化管理工具-Cerebro
  2. Vue知识点总结(16)——具名插槽(超级详细)
  3. Ultra Recal 一款DIY的个人管理软件
  4. 怎么批量设置EDIUS中的图片持续时间
  5. 怎么在宝妈论坛引流?宝妈论坛如何引流?如何引流宝妈群体
  6. 使用qq邮箱发送html格式的邮件
  7. 01.04_计算机基础知识(键盘功能键和快捷键)
  8. [生活] 领带的打法
  9. WinForm登陆成功后跳转到主窗口
  10. 在html中div水平垂直css,html中div使用CSS实现水平/垂直居中的多种方式