题目链接
题意

给你一个n行m列的矩阵,矩阵可以行交换。
从上至下,从左到右,下标标记为s1s_1s1​,s2s_2s2​,s3s_3s3​,s4s_4s4​……
求∣si−si−1∣|s_i-s_{i-1}|∣si​−si−1​∣最大

思路

预处理每行。

  1. 将每行变为一个点,每点之间距离就是,行内对应元素最小差值。
  2. 注意第一行(相对,由于可以交换)与最后一行(相对,由于可以交换),都需要另算,行内对应元素错位最小差值。

即求新建的完全图哈密顿回路,最小边最大。
首先哈密顿回路必定存在,我们可以枚举起点。
求以该点为起点的所有终点的哈密顿通路的答案tmp。
由于是回路,所以还要将答案tmp与起点终点的2进行比较取小。


对于每个枚举的起点,状压DP[i][j] i表示当前已经走过的点,j表示当前走到的最后一个点。
对于i状态,枚举他的两个子集,j,k,表示j是终点,k是起点。
dp[i][j] = max(dp[i][j], min(dp[i^(1<<j)][k], e[k][j]));

这样状压DP满足无后效性,for从0到(1<<n)-1,是从小到大
比如0110011这种状态,他的所有子状态都比他小,会先枚举到子状态,而他也不会更新子状态


数组开小了找了一天BUG,f**k。


代码
#include <bits/stdc++.h>
using namespace std;#define ll long long
#define INF 0x3f3f3f3fint n, m, v[20][10005], e[20][20], dp[(1<<16)+5][20], e2[20][20];inline ab(int a)
{return a < 0 ? -a : a;
}int main()
{scanf("%d%d",&n,&m);for(int i = 0; i < n; ++i) for(int j = 0; j < m; ++j) scanf("%d",&v[i][j]);for(int i = 0; i < n; ++i){for(int j = 0; j < n; ++j){e[i][j] = e2[i][j] = INF;for(int k = 0; k < m; ++k) e[i][j] = min(e[i][j], ab(v[i][k]-v[j][k]));for(int k = 1; k < m; ++k) e2[i][j] = min(e2[i][j], ab(v[i][k]-v[j][k-1]));}}int ans = 0;for(int st = 0; st < n; ++st){memset(dp,0,sizeof(dp));dp[1<<st][st] = INF;for(int i = 0; i < (1<<n); ++i){for(int j = 0; j < n; ++j){if(i&(1<<j)){for(int k = 0; k < n; ++k){if(j == k || ((i&(1<<k)) == 0)) continue; // 应该无所谓,反正0更新不了dp[i][j] = max(dp[i][j], min(dp[i^(1<<j)][k], e[k][j]));}}}}for(int en = 0; en < n; ++en) ans = max(ans, min(e2[st][en], dp[(1<<n)-1][en]));}printf("%d\n",ans);return 0;
}

Codeforces Round #531 (Div. 3) F. Elongated Matrix(状压DP)相关推荐

  1. Codeforces Round #585 (Div. 2)E. Marbles(状压dp)

    https://codeforces.com/contest/1215/problem/E cnt[x][j]表示把x这种颜色全放到j这种颜色前面所需要的交换次数. 其实这题跟上一篇博客那题是同一个套 ...

  2. Codeforces Round #595 (Div. 3) F. Maximum Weight Subset 树形dp

    传送门 文章目录 题意: 思路: 题意: n≤200n\le200n≤200 思路: 明显的树形dpdpdp,所以考虑一下dpdpdp状态. 这个题状态挺神的..可能是因为我太菜了,看了半天才看懂. ...

  3. Codeforces Round #521 (Div. 3): F. Pictures with Kittens(DP+单调队列)

    题意: 你有n幅画,第i幅画的好看程度为ai,再给你两个数字k,x,表示你要从中选出刚好x幅画,并且相邻两幅画的距离不能≥k,好看程度之和最大能多少,选不出来输出-1,F1数据范围<200,F2 ...

  4. Codeforces Round #642 (Div. 3) F. Decreasing Heights 题解(dp+思维)

    题目链接 题目思路 emmm这个题目如果找到一个性质就很好了,就是如果确定a[1][1]的值,那么就一下确定了,而且a[1][1]的值只有n*m个.因为如果最终的合法路径每个格子都被操作了至少一次,那 ...

  5. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

  6. Codeforces Round #644 (Div. 3) F.Spy-string

    Codeforces Round #644 (Div. 3) F.Spy-string 题目链接 You are given n strings a1,a2,-,an: all of them hav ...

  7. Codeforces Round #849 (Div. 4) F. Range Update Point Query

    Codeforces Round #849 (Div. 4) F. Range Update Point Query 题目大意: 给一串数字,有两个操作: 操作1:将 l − r l-r l−r 的数 ...

  8. Codeforces Round #538 (Div. 2) F. Please, another Queries on Array? 线段树 + 欧拉函数

    传送门 文章目录 题意: 思路: 题意: 给你一个序列aaa,你需要实现两种操作: (1)(1)(1) 将[l,r][l,r][l,r]的aia_iai​都乘rrr. (2)(2)(2) 求ϕ(∏i= ...

  9. Codeforces Round #742 (Div. 2) F. One-Four Overload 构造 + 二分图染色

    传送门 文章目录 题意: 思路: 题意: 给你一个n∗mn*mn∗m的矩形,包含...和XXX,你有两种颜色,你需要给...染色使得每个XXX上下左右相邻的...其两种颜色个数相同,输出一种合法方案. ...

  10. Codeforces Round #740 (Div. 2) F. Top-Notch Insertions 线段树 / 平衡树 + 组合数学

    传送门 文章目录 题意: 思路: 题意: 思路: 考虑最终的序列是什么鸭子的,首先序列肯定单调不降,也就是a1≤a2≤a3≤...≤ana_1\le a_2\le a_3\le ...\le a_na ...

最新文章

  1. c语言实现 十进制到二进制的转换
  2. Java多层的异常捕获
  3. python怎么把程序封装成函数_PYTHON中如何把固定格式代码,封装成一个函数?
  4. Linux系统监控之磁盘I/O篇
  5. form表单 无法提交js动态添加的表单元素问题。。
  6. 8.9 NOIP模拟测试15 建设城市(city)+轰炸行动(bomb)+石头剪刀布(rps)
  7. python可以连接sql server_python连接sqlserver数据库之一
  8. DropDownList的项按字母顺序排列
  9. 云丁智能锁说明书_真硬核!行业爆发前夜,这把锁登上航母
  10. 台式计算机总是重启,电脑为什么老是自动重启?我的电脑经常自动重启!!
  11. C语言--函数-统计单词个数
  12. 中文同义句在线转换器 - 中文同义句转换器软件
  13. 拖延症测试皮肤软件,桌面时钟软件
  14. 如何制作资产编号标签
  15. Ember.js如何与后端服务交互?adapter、store、ember data关系揭秘 1
  16. 3分钟了解伺服驱动器的工作原理
  17. AT24C1024读写
  18. openvino c++推理华盛顿大学BackgroundMattingV2模型人像抠图
  19. 总结下花了大约半年的时间从零开始的unity游戏开发(1)
  20. Symbian日薄西山了么

热门文章

  1. 如何自己制作一个RISC指令集的CPU?
  2. 利用线性回归进行销售预测
  3. python输入名字配对情侣网名_名字匹配度情侣,打出自己的名字和对象的名字
  4. python数学公式编辑工具_Karl的良心佳软推荐 篇二:目前最好用的数学公式编辑神器——Mathpix Snipping Tool...
  5. html语言定义诗歌教学实例,小班语言活动案例分析:古诗清明
  6. 基于struts2的个人信息管理系统(一)
  7. 洛谷P3356 火星探险问题(费用流)
  8. [转]批处理详细教程
  9. 性能测试实战--计划测试(一)
  10. matlab中clc、clear、close命令以及函数文件