题面

sol:先爆搜搜出r行,再在那r行中选c列DP得到最优解

我太菜了,这种题都做了好久,还需锻炼码力啊qwq

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int n, m, r, c, Map[][], loc[], ll[], hh[][], f[][], ans;
inline void solve()
{
memset(f, , sizeof f);
memset(ll, , sizeof ll);
memset(hh, , sizeof hh);
for(int i = ; i <= m; i++)
for(int j = ; j <= r; j++)
ll[i] += abs(Map[loc[j]][i] - Map[loc[j - ]][i]);
for(int i = ; i <= m; i++)
for(int j = i + ; j <= m; j++)
for(int k = ; k <= r; k++)
hh[i][j] += abs(Map[loc[k]][i] - Map[loc[k]][j]);
for(int i = ; i <= m; i++)
f[][i] = ll[i];
for(int i = ; i <= c; i++)
for(int j = ; j <= m; j++)
for(int k = j + ; k <= m ; k++)
f[i][k] = min(f[i][k], f[i - ][j] + ll[k] + hh[j][k]);
for(int i = c; i <= m; i++)
ans = min(ans, f[c][i]);
}
inline void dfs(int x, int pre)
{
if (x == r + )
{
solve();
return;
}
for(int i = pre + ; n - i >= r - x; i++)
loc[x] = i,
dfs(x + , i);
}
int main()
{
while(~scanf("%d%d%d%d", &n, &m, &r, &c))
{
ans = 0x3f3f3f3f;
memset(loc, , sizeof loc);
for(int i = ; i <= n; i++)
for(int j = ; j <= m; j++)
scanf("%d", &Map[i][j]);
dfs(, );
printf("%d\n", ans);
}
}

luogu2258的更多相关文章

随机推荐

  1. 记一次InputStream引起的乱码

    项目上线一周后,正准备看新闻的我突然接到了一个任务.线上突然出现了一条乱码的数据,需要解决这个bug.于是我放下了手中的保温杯,开始解决这个bug.经过一番折腾,发现是有一个同事在处理IO流上写得有点 ...

  2. 两个select之间的元素互相移动并保持顺序

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. 深入浅出Tomcat/2 - Tomcat启动和停止

    Tomcat启动和停止 很明显,我们启动或停止Tomcat,一般调用的是bin下的startup.sh或shutdown.sh(以Linux为例,以下涉及到平台,若无特殊说明,一般都指Linux).我 ...

  4. 使用git将项目上传到github

    使用git将项目上传到github(最简单方法)   首先你需要一个github账号,所有还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下 ...

  5. 【评分】Alpha 事后诸葛亮(团队)

    [评分]Alpha 事后诸葛亮(团队) 总结 按时交 - 有分 晚交 - 0分 迟交一周以上 - 倒扣本次作业分数 抄袭 - 倒扣本次作业分数 本次作业都是以问答形式进行,大部分同学在回答问题方面都一 ...

  6. Mysql 索引问题集锦

    一.Mysql 中的索引 索引:顾名思义用来检索.查找数据的key (字段) 几种Mysql 中的常见索引分类:普通索引(联合索引).唯一索引.主键索引.全文索引 优点:使得查询数据变快 缺点:更新数 ...

  7. Python_socket常见的方法、网络编程的安全注意事项、socketsever模块、浏览器中在一段时间记录用户的登录验证机制

    1.socket常见的方法 socket_常见方法_服务器端 import socket from socket import SOL_SOCKET,SO_REUSEADDR sk = socket. ...

  8. Golang开发工具LiteIDE使用方法整理

    安装 参考github的说明 添加GOPATH 创建workspace 创建新文件 运行程序 Liteide中运行程序有两种方式: FR(FileRun)是编译并运行单个文件,可以使用Shift + ...

  9. 1 CHM 中文都是乱码

    CHM格式是Windows系统里常见的帮助文档格式,但有时一些CHM格式的文档会局部显示乱码,特别是一些外文文档在中文版Windows里.这是因为,CHM格式文档在Windows下默认是使用IE浏览器 ...

  10. java lang(Comparable接口) 和java util(Comparator接口)分析比较

    //Comparable 接口强行对实现它的每个类的对象进行整体排序. -- 自然排序.类的compareTo称为自然比较方法. public interface Comparable<T> ...