[NOIP2014]子矩阵
1812. [NOIP2014]子矩阵
http://www.cogs.pro/cogs/problem/problem.php?pid=1812
★★★ 输入文件:submatrix.in
输出文件:submatrix.out
简单对比
时间限制:1 s 内存限制:256 MB
【题目描述】
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
using namespace std;
int a[][],m,n,r,c,lr[],ud[],dp[][];
int rlc[],udc[][],ans=0x7fffffff;
void Dp(){
memset(rlc,,sizeof(rlc));
memset(udc,,sizeof(udc));
memset(dp,/,sizeof(dp));
//不同列之间的差
for(int i=;i<=m;i++)
for(int j=;j<i;j++)
for(int k=;k<=r;k++)
udc[j][i]+=abs(a[lr[k]][i]-a[lr[k]][j]);
//不同行之间的差
for(int i=;i<=m;i++)
for(int j=;j<r;j++)
rlc[i]+=abs(a[lr[j]][i]-a[lr[j+]][i]);
for(int i=;i<=n;i++)dp[i][]=,dp[i][]=rlc[i];
for(int i=;i<=c;i++){
for(int j=i;j<=m;j++){
for(int k=i-;k<j;k++){
dp[j][i]=min(dp[k][i-]+udc[k][j]+rlc[j],dp[j][i]);
}
}
}
for(int i=c;i<=m;i++)ans=min(ans,dp[i][c]);
}
void dfs(int Step,int rest){
if(Step==r){Dp();return;}
if(r-Step>rest)return;
for(int i=rest;i>=;i--){lr[Step+]=i;dfs(Step+,i-);}
}
int main(){
freopen("submatrix.in","r",stdin);
freopen("submatrix.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&r,&c);
for(int i=;i<=n;i++)for(int j=;j<=m;j++)scanf("%d",&a[i][j]);
dfs(,n);
printf("%d",ans);
}
[NOIP2014]子矩阵的更多相关文章
- Luogu 2258 [NOIP2014] 子矩阵
被普及组虐了,感觉
- $NOIp$普及组做题记录
\([NOIp2014]\) 螺旋矩阵 \(Sol\) 直接模拟,一次走一整行或者一整列.复杂度\(O(n)\). \(Code\) #include<bits/stdc++.h> #de ...
- 【NOIP2014】子矩阵
这题如果按暴力做只有一半分,最大时间复杂度为O(C(16,8)*C(16,8)); 很容易算出超时: 我们可以发现如果直接dp会很难想,但是知道选哪几行去dp就很好写状态转移方程: dp[i][j]= ...
- 1768:最大子矩阵(NOIP2014初赛最后一题)
1768:最大子矩阵 总时间限制: 1000ms 内存限制: 65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如 ...
- NOIP2014 T4 子矩阵 dfs+dp
最近在狂补题啊QAQ... 打算先把NOIP的干掉吧... 点我看题 链接还是放洛谷的了... 题意:给一个n*m的矩阵,在这个矩阵里选 r 行 c 列,然后这 r 行 c 列所相交的格子为新矩阵的, ...
- [NOIP2014普及组]子矩阵
题目:洛谷P2258.Vijos P1914.codevs 3904. 题目大意:给你一个矩阵,要你找一个r行c列的子矩阵,求最小分值(子矩阵和分值的定义见原题). 解题思路:n和m比较小,考虑暴力. ...
- ACM 中 矩阵数据的预处理 && 求子矩阵元素和问题
我们考虑一个$N\times M$的矩阵数据,若要对矩阵中的部分数据进行读取,比如求某个$a\times b$的子矩阵的元素和,通常我们可以想到$O(ab)$的遍历那个子矩阵,对它的各 ...
- [BZOJ1127][POI2008] KUP子矩阵
Description 给一个n*n的地图,每个格子有一个价格,找一个矩形区域,使其价格总和位于[k,2k] Input 输入k n(n<2000)和一个n*n的地图 Output 输出矩形的左 ...
- 【SCOI2005】 最大子矩阵 BZOJ 1084
Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...
随机推荐
- API的理解和使用——字符串的命令
字符串的命令复习表 命令 作用 set setex setnx get mset mget incr decs incrby decrby incrbyfloa ...
- elasticsearch 简单聚合查询示例
因为懒癌犯了,查询语句使用的截图而不是文字,导致了发布随笔的时候提示少于150字的随笔不能发布. 我就很郁闷了. 下面的查询都是前段时间工作中使用过的查询语句. 开始的时候是使用nodejs构建es查 ...
- POJ2443 Set Operation —— bitset
题目链接:https://vjudge.net/problem/POJ-2443 Set Operation Time Limit: 3000MS Memory Limit: 65536K Tot ...
- (1)WEB框架概念和struts2体验
Struts快速入门 day31 1.相关jar包 Struts2-core-lib(Struts2 的核心jar包) 代理的两种方式 JDK(简单,不稳定)和第三方 javaassist包——动态代 ...
- 分享知识-快乐自己:全面解析 java注解实战指南
请你在看这篇文章时,不要感到枯燥,从头到尾一行行看,代码一行行读,你一定会有所收获的. 问: 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答: 1):能够读懂别人的代码,特别是框架相关的代 ...
- 如何改变cmd窗口大小
按下Win+R(windows徽标和R一起按),再输入cmd. 输入mode ,查看当前屏幕的大小,来为后面准备(大概估计数值大小). 再输入mode con:cols=400 lines=400 ...
- springmvc的简单介绍以及springmvc组件的介绍
Spring web mvc框架 什么是springmvc Springmvc是spring框架的一个模块,spring和springmvc无需中间整合层整合 Springmvc是一个基于mvc的we ...
- Java丨角色权限控制——数据库设计
相信各位读者对于角色权限管理这个需求并不陌生.那么是怎么实现的呢?今天小编来说道说道! 1.首先我们来进行数据库的设计,如何设计数据库是实现权限控制的关键: 1)用户表: id:主键.自增.int n ...
- Codeforces Gym 101190 NEERC 16 G. Game on Graph(博弈+拓扑)
Gennady and Georgiy are playing interesting game on a directed graph. The graph has n vertices and m ...
- bzoj 4671 异或图 —— 容斥+斯特林反演+线性基
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4671 首先,考虑容斥,就是设 \( t[i] \) 表示至少有 \( i \) 个连通块的方 ...