HUD-1559 最大子矩阵,dp模拟】的更多相关文章

题目地址:pid=1559">HDU 1559 构造二维前缀和矩阵.即矩阵上的点a[i][j]表示左上方的点为(0,0),右下方的点为(i,j)的矩阵的和.然后枚举每一个矩阵的左上方的点.因为矩阵的长和宽是固定的,那么这个矩阵实际上也已经固定了.此时这个矩阵的和用公式: sum=a[i+x-1][j+y-1]-a[i+x-1][j-1]-a[i-1][j+y-1]+a[i-1][j-1]; 取最大值就能够了. 代码例如以下: #include <iostream> #inclu…
最大子矩阵                                                                                                            Time Limit: 30000/10000 MS (Java/Others)                                                                                                 …
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1559 #include <cstring> #include <cstdlib> #include <cstdio> #include <iostream> #include <algorithm> using namespace std; +; <<; int map[maxn][maxn]; //表示以[1,1]为左上角,以[i,j]为右…
题目链接:点击链接 #include<stdio.h> #include<string.h> #define max(a,b) a>b?a:b int d[1005][1005]; int main() { int T,n,m,x,y,i,j; scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&n,&m,&x,&y); memset(d,0,sizeof…
http://acm.hdu.edu.cn/showproblem.php?pid=5009 2014网络赛 西安 比较难的题 Paint Pearls Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 1951    Accepted Submission(s): 631 Problem Description Lee has a str…
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过32767). Output 只有一行为k个子矩阵…
给你一个二进制数,,每一位有一个权值,让你转格雷码,求所对应格雷码位为1的权值的和:二进制位中的某些位为?,你需要给这些问号赋值使得到的和最大. 首先你得知道二进制转格雷码的规则,即格雷码位为[二进制位与左边前一位的异或值],格雷码首位为二进制首位: 因为格雷码首位为二进制首位,那么可以视二进制首位的左边前一位是0: 然后你就可以分情况模拟了: 1.连续数字的情况直接计算即可: 2.连续问号的情况需要dp一下:dp[k][j]表示第k个问号是j时,得到的最大和,那么dp[k][j] = max(…
F - 最大子矩阵和 Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u   Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within t…
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表示第一列枚举到i,第二列枚举到j,花了k次操作的最大子矩阵和,然后转移有三种一种是只转移i,一种是只转移j,还有一种是ij都转移,然后我们需要枚举空出来的地方的终点,我们预处理出ma[i][j]表示从i+1到j的后缀最大和,三维是三种转移所需要的的情况,然后可以O(3*N^3)的解决 /******…
http://www.lydsy.com/JudgeOnline/problem.php?id=1622 这题我搜的题解是dp,我也觉得是dp,但是好像比模拟慢啊!!!! 1400ms不科学! 设f[i][j]为名字i位置的j字母最早出现的位置(向后) 则 f[i][j]=f[i+1][j] f[i][a[i+1]]=i+1 那么就可以递推出,然后查找即可.. 但是大量的memcpy导致很慢啊.. #include <cstdio> #include <cstring> #incl…