题目地址:CF1102F Elongated Matrix

没想到Div.3里还有这么好的题

其实就是求Hamilton路径

预处理 \(d\) 数组:

\(d1_{i,j}\) 表示第 \(i,j\) 行相邻产生的最小值

\(d2_{i,j}\) 表示第 \(i,j\) 行分别为最后一行和第一行时产生的最小值

将每一行当成一个点,任意两点 \(i,j\) 间连一条边权为 \(d1_{i,j}\) 的边

在图中求一条经过边权中最小值最小的Hamilton路径

设 \(f_{i,j}=min(s_{i,j},d2_{j,i})\)

所有 \(f\) 的最小值即为 \(ans\)

求Hamilton路径用状压dp

总时间复杂度为 \(O(n^2m+2^nn^3)\)

代码:

#include <bits/stdc++.h>
using namespace std;
const int N = 16, M = 10000, INF = 0x3f3f3f3f;
int n, m, a[N][M], d1[N][N], d2[N][N], f[N][N];
int s[1<<N][N], ans;

void Hamilton(int x) {
    memset(s, 0, sizeof(s));
    s[1<<x][x] = INF;
    for (int i = 1; i < (1 << n); i++)
        for (int j = 0; j < n; j++)
            if ((i >> j) & 1)
                for (int k = 0; k < n; k++)
                    if (((i ^ (1 << j)) >> k) & 1)
                        s[i][j] = max(s[i][j], min(s[i^(1<<j)][k], d1[k][j]));
}

int main() {
    cin >> n >> m;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            scanf("%d", &a[i][j]);
    memset(d1, 0x3f, sizeof(d1));
    memset(d2, 0x3f, sizeof(d2));
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < m; k++)
                d1[i][j] = min(d1[i][j], abs(a[i][k] - a[j][k]));
            for (int k = 1; k < m; k++)
                d2[i][j] = min(d2[i][j], abs(a[i][k-1] - a[j][k]));
        }
    for (int i = 0; i < n; i++) {
        Hamilton(i);
        for (int j = 0; j < n; j++)
            ans = max(ans, min(s[(1<<n)-1][j], d2[j][i]));
    }
    cout << ans << endl;
    return 0;
}

CF1102F Elongated Matrix的更多相关文章

  1. cf1102F. Elongated Matrix(状压dp)

    题意 题目链接 Sol \(n \leqslant 16\)可以想到状压 我们可以预处理出任意两行之间每列的最小值以及相邻两列的最小值 然后枚举一个起点,\(f[sta][i]\)表示走过了\(sta ...

  2. Codeforces 1102F Elongated Matrix 状压dp

    Elongated Matrix 预处理一下两两之间的最小值, 然后直接dp. #include<bits/stdc++.h> #define LL long long #define f ...

  3. Codeforces Round #531 (Div. 3) F. Elongated Matrix(状压DP)

    F. Elongated Matrix 题目链接:https://codeforces.com/contest/1102/problem/F 题意: 给出一个n*m的矩阵,现在可以随意交换任意的两行, ...

  4. Codeforces1102F Elongated Matrix 【状压DP】

    题目分析: 这题瞎搞一个哈密尔顿路,对于起点不同的分开跑就可以过了. $O(n^3*2^n)$ #include<bits/stdc++.h> using namespace std; ; ...

  5. angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation

    今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:

  6. Pramp mock interview (4th practice): Matrix Spiral Print

    March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...

  7. Atitit Data Matrix dm码的原理与特点

    Atitit Data Matrix dm码的原理与特点 Datamatrix原名Datacode,由美国国际资料公司(International Data Matrix, 简称ID Matrix)于 ...

  8. Android笔记——Matrix

    转自:http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#translate Matrix的数学原理 在Android中,如果你 ...

  9. 通过Matrix进行二维图形仿射变换

    Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...

随机推荐

  1. day-01(html)

    本文档并非个人所写,只是方便自己参考: 案例1-网站信息展示需求: 在页面展示一些文字信息,需要排版技术分析: html:超文本标签语言////////////////////html: 作用:展示 ...

  2. nginx变量(日志log_format)

    nginx变量(日志log_format) HTTP请求变量 - arg_PARAMETER.http_HEADER.sent_http_HEADER 它是指http请求中的变量,举例: curl访问 ...

  3. docker 基础之私有仓库

    docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库.安装运行 docker-registry容器 在安装了 Docker 后,可以通过获取官方 registry 镜像来运行. ...

  4. 启动oracle的步骤

    启动oracle的步骤 Linux下启动oracle分为以下两步: 1.1.启动lsnrctl监听. 1.2.启动数据库实例. 启动oracle监听 首先登陆服务器,切换到oracle用户. [adm ...

  5. JDBC-DbUtils

    依赖 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  6. HTML 基础知识汇总(一)

    头部: <head> <!-- 国际通用编码 --> <meta charset="UTF-8"> <!-- 超链接优化写法,让所有的超链 ...

  7. Linux记录-linux系统常用监控指标

    1.Linux运维基础采集项 做运维,不怕出问题,怕的是出了问题,抓不到现场,两眼摸黑.所以,依靠强大的监控系统,收集尽可能多的指标,意义重大.但哪些指标才是有意义的呢,本着从实践中来的思想,各位工程 ...

  8. js静态方法与实例方法定义,js回调方法定义

    主要为了回调方法,随便把静态言法和实例方法也回顾一下. <script type="text/javascript"> var fun = { //下面是静态方法(第一 ...

  9. js学习总结:DOM节点一(选择器,节点类型)

    DOM:document object model 文档对象模型 DOM就是整个HTML文档的关系图谱(代表整个HTML文档),可以理解为下图: 一.查看元素节点 1.document.getElem ...

  10. vue实现简单的全选、反选、不选

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...