hdu(2859)——Phalanx(dp)
题意:
如今有一个n*n的矩阵,然后每一个格子中都有一个字母(大写或小写组成)。然后询问你如今最大的对称子矩阵的边长是多少。注意这里的对角线是从左下角到右上角上去的。
思路:
这道题我自己写出了dp的定义式,可是要怎么转移方程并没有推出来。
我看了好久的题解才明确的,果然还是太弱。。。
首先我们定义:dp[i][j]为第i行第j列所可以组成的最大对称子矩阵的长度。
关于对角线全然对称的矩阵!
转移方程为:dp[i][j]=dp[i-1][j+1]+1 ; 注意这里是由点(i-1,j+1)推过来的。由于我们在这里矩阵的对角线是由左下角推到右上角去的。
首先我们要进行初始化,第0行的它们所能组成的dp[0][i]=1,最大仅仅能组成1个。
然后我们对每一个点进行推断(i,j),当然它是从(i-1,j+1)推过来的。可是对于每一个字符看该列以上和该行右側的字符匹配量,假设该匹配量大于右上角记录下来的矩阵大小。那么就是右上角的数值加1。否则就是这个匹配量(由于我们我们每次都要满足全部的。所以要尽可能的取小的)
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define maxn 1111
int dp[maxn][maxn];
char a[maxn][maxn];
int main(){
int n;
while(~scanf("%d",&n)){
if(n==0) break;
int ans=1;
for(int i=0;i<n;i++) scanf("%s",a[i]);
for(int i=0;i<n;i++) dp[0][i]=1;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==0) continue;
int tx=i,ty=j;
while(tx>=0&&ty<n&&a[tx][j]==a[i][ty]){
tx--; ty++;
}
int cur=i-tx;
if(cur>=dp[i-1][j+1]+1) dp[i][j]=dp[i-1][j+1]+1;
else dp[i][j]=cur;
ans=max(ans,dp[i][j]);
}
}
printf("%d\n",ans);
}
}
*(这道题真心卡了不少时间。希望可以好好思考,举一反三啊!)
hdu(2859)——Phalanx(dp)的更多相关文章
- HDU 2859 Phalanx (DP)
Phalanx Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- HDU 2859—Phalanx(DP)
Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description Today i ...
- HDU 2859 Phalanx ——(DP)
感觉是个n^3的dp,只是可能上界比较松吧..转移见代码.值得注意的一个地方是如果n是1,那么在for里面是不会更新答案的,因此ans要初始化为1. 代码如下: #include <stdio. ...
- HDU 2859 Phalanx(对称矩阵 经典dp样例)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=2859 Phalanx Time Limit: 10000/5000 MS (Java/Others) ...
- HDU 4433 locker(DP)(2012 Asia Tianjin Regional Contest)
Problem Description A password locker with N digits, each digit can be rotated to 0-9 circularly.You ...
- HDU 3008 Warcraft(DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3008 题目大意:人有100血和100魔法,每秒增加 t 魔法(不能超过100).n个技能,每个技能消耗 ...
- hdu 2059 龟兔赛跑(dp)
龟兔赛跑 Problem Description 据说在很久很久以前,可怜的兔子经历了人生中最大的打击——赛跑输给乌龟后,心中郁闷,发誓要报仇雪恨,于是躲进了杭州下沙某农业园卧薪尝胆潜心修炼,终于练成 ...
- HDU 4832 Chess (DP)
Chess Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- HDU 4945 2048(dp)
题意:给n(n<=100,000)个数,0<=a[i]<=2048 .一个好的集合要满足,集合内的数可以根据2048的合并规则合并成2048 .输出好的集合的个数%998244353 ...
随机推荐
- Nginx-虚拟主机配置问题
Nginx-虚拟主机配置问题 标签(空格分隔): linux,php,nginx,larave 这两天突然想配置lnmp环境,学习下Nginx配置结果就遇到了下边的问题 Nginx: server下的 ...
- Kali linux 2016.2(Rolling)里Metasploit的OpenVAS
不多说,直接上干货! 关于OpenAVS的概念,我这里不多赘述. 前提得,大家要先安装好OpenVAS!!! 我们都知道,BT5中已经预先安装好了OpenVAS网络漏洞扫描工具,我们只需进行一些配置即 ...
- 【DNN 系列】 MVC 分页
MVC分页可采用插件形式, 有MvcPage那个插件但是我觉得那个是假分页 有点影响效率 所以网上找了一个例子来 做分页 1, PagerQuery.cs public class PagerQuer ...
- WebApp之H5登录注册
代码indexhtml <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...
- ES6中常用的简写方式
1. var foo = 'bar'; var baz = {foo}; baz // {foo: "bar"} // 等同于 var baz = {foo: foo}; 2. f ...
- NodeJS学习笔记 进阶 (10)Nodejs 进阶:log4js入门实例(ok))
个人总结:读完这篇文章讲解了log4js的使用,具体更多可以参考npmjs上看,读完这篇需要15分钟. 摘选自网络 对于线上项目用来说,日志是非常重要的一环.log4js是使用得比较多的一个日志组件, ...
- Hexo Next 调优
Links对齐 编辑themes/next/source/css/_custom下的custom.styl,添加如下代码即可. .links-of-blogroll-title{ margin-lef ...
- To new is C++; To malloc is C; To mix them is sin (混淆C++中的new和C中的malloc是一种犯罪)
Introduction One of the most common questions that get asked during interviews for C++ programmers i ...
- type 'simple Class' does not conform to protocol 'Example Protocol'错误
在看swift教程中"接口和扩展"这小部分. 在编写时提示"type 'simple Class' does not conform to protocol 'Examp ...
- 使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
转载请标明出处:http://blog.csdn.net/xx326664162/article/details/49247815 文章出自:薛瑄的博客 你也能够查看我的其它同类文章.也会让你有一定的 ...