Phalanx--hdu2859(dp 最大对称子图)】的更多相关文章

Phalanx 先搬翻译 Descriptions: 给你一个矩阵,只由小写或大写字母构成.求出它的最大对称子矩阵的边长. 其中对称矩阵是一个k*k的矩阵,它的元素关于从左下角到右上角的对角线对称.例如下面这个3* 3的矩阵是对称矩阵:cbxcpbzcc Input 多组数据.每一组第一行是一个 n (0<n<=1000),下面是n行,每一行有n个字母,中间没有空格.数据以n=0结束. Output 每组数据输出最大的对称矩阵的边长. Sample Input 3 abx cyb zca 4…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2859 题意就是给你一个n*n的字符矩阵,从中选出一个最大的子矩阵(m*m)满足关于斜对角线(左下角到右上角)对称,求出这个矩阵的大小m: 我们可以用dp[i][j]表示当前位置到右上角这个子矩阵所能表示对称的矩阵最大值: #include<stdio.h> #include<string.h> #include<stdlib.h> #include<algorithm…
dp[i][j]代表以s[i][j]字符为右上角的最大对称方阵的尺寸 最左边那一列都为1,然后按列更新,代码实现比较简单,感觉有点卡时间,如果对称度很好,时间应该比较高,我只会这种了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<algorithm> #include<cstring> #include<cstring…
Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Today is army day, but the servicemen are busy with the phalanx for the celebration of the 60th anniversary of the PRC. A phalanx is a matrix of size n*n, each e…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2859 题意:输入一个数n,接下来是一个由n*n个字母组成的矩阵,求以左下到右上的线为轴的最大对称阵的大小. 思路:就是dp,,,我最大的感悟就是dp要是想明白了,代码贼简单,想不懂就是死难..思路么,看下面的图就懂了. 代码: #include<iostream> #include<cstdio> #include<algorithm> #include<…
Phalanx Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 363    Accepted Submission(s): 170 Problem Description Today is army day, but the servicemen are busy with the phalanx for the celebratio…
题意: 如今有一个n*n的矩阵,然后每一个格子中都有一个字母(大写或小写组成).然后询问你如今最大的对称子矩阵的边长是多少.注意这里的对角线是从左下角到右上角上去的. 思路: 这道题我自己写出了dp的定义式,可是要怎么转移方程并没有推出来. 我看了好久的题解才明确的,果然还是太弱... 首先我们定义:dp[i][j]为第i行第j列所可以组成的最大对称子矩阵的长度. 关于对角线全然对称的矩阵! 转移方程为:dp[i][j]=dp[i-1][j+1]+1 : 注意这里是由点(i-1,j+1)推过来的…
感觉是个n^3的dp,只是可能上界比较松吧..转移见代码.值得注意的一个地方是如果n是1,那么在for里面是不会更新答案的,因此ans要初始化为1. 代码如下: #include <stdio.h> #include <algorithm> #include <string.h> using namespace std; + ; char s[N][N]; int dp[N][N]; int n; int main() { && n) { ;i<=…
本文参考:CPH ,USACO Guide (大佬请越过,这是初学笔记,不要吐槽内容) 前置知识:位运算基础,动态规划基础 介绍 状态是元素的子集的动态规划算法,可以用位运算来高效的优化. 那么第一道题就应声而来: 哈密顿航班 我觉得这道题会花费很长时间,但是这题不算难,首先要自己尝试. 题目意思是给定一个很小的图,从\(1\)号点到\(n\)号点,每个点恰好走一次有几种方案? 看过这道题,你是否想到了旅行商问题?没错,这是一个没有保证正确的多项式时间复杂度的算法的问题.好吧,至少方向是有了.\…
C 维护前缀和 题意 每一个id给一个权值序列,从每个id选出数量相同的权值,对他们进行求和,使得他们的和最大 题解 注意负数对结果没有贡献,直接跳过. 当时写的比较挫,连排序都写错了!cf的编译器比较的严谨,虽然本地的编译器过了样例,但实际上是有问题的.结果就是交上去疯狂RE. 题解就直接看代码,比较的直观 代码 #include <bits/stdc++.h> using namespace std; const int maxn = 2e5+10; int n, m, k; int a[…