补题链接:Here 经典状压DP问题 坑点,注意多组输入。。。 const int N = 16, mod = 100000000; int f[N][1 << N]; int a[N]; void solve() { int n, m; while (cin >> n >> m) { memset ...
分类:
其他好文 时间:
2021-06-05 17:40:05
阅读次数:
0
最短Hamilton路径 给定一张 nn 个点的带权无向图,点从 0~n?10~n?1 标号,求起点 00 到终点 n?1n?1 的最短 Hamilton 路径。 Hamilton 路径的定义是从 0,0 到 n?1,n?1 不重不漏地经过每个点恰好一次。 输入格式 第一行输入整数 nn。 接下来 ...
分类:
其他好文 时间:
2021-04-10 13:21:09
阅读次数:
0
DP相关目录 几个基本 重要的划分依据: “最后”一步 集合划分依据:1. 不重复 2. 不漏 思考方式如下图: 基本模型 数字三角形模型 最长上升子序列模型 背包模型 状态机模型 状态压缩DP 区间DP 树形DP 数位DP 单调队列优化DP 斜率优化DP ...
分类:
其他好文 时间:
2021-03-16 11:58:24
阅读次数:
0
状态压缩DP 初探 +++ 1.蒙德里安的梦想 求把NM的棋盘分割成若干个12的的长方形,有多少种方案。 例如当N=2,M=4时,共有5种方案。当N=2,M=3时,共有3种方案。 如下图所示: 输入格式 输入包含多组测试用例。 每组测试用例占一行,包含两个整数N和M。 当输入用例N=0,M=0时,表 ...
分类:
其他好文 时间:
2020-11-01 22:10:36
阅读次数:
21
题目链接:https://www.acwing.com/problem/content/531/ 题目给出不超过12个点,和一些边,第一个点不用花费,其余的点都要根据深度和扩展的边长来确定花费,通过dp,将层数作为阶段,每个阶段用状态压缩记录12个点中已经走过的点,转移的过程是从j状态转移到k,这里 ...
分类:
编程语言 时间:
2020-08-01 14:36:55
阅读次数:
109
位运算 + 二进制表示状态 = 状态压缩DP 先把横着的小方块放好,然后剩下位置用竖着的小方块填充 然后就转化为求横着摆放小方块的方案数 按列来求 状态表示: dp[i][j]表示所有摆到了第i列,然后上一列伸出来的小方块的状态是j的情况下,总的方案数 状态转移:枚举一下i - 1列的状态 比如说当 ...
分类:
其他好文 时间:
2020-07-05 13:26:10
阅读次数:
142
#include<bits/stdc++.h> using namespace std; //状态压缩dp,二进制法,搜索法的优化 int dp[1<<20][21],n;//最多20个点,就是20位二进制 //在状态是i,末位点是j的情况下的最小值(因为状态没有顺序信息,但是其实只需要知道末尾点即... ...
分类:
其他好文 时间:
2020-06-06 21:35:25
阅读次数:
73
本系列文章将于2021年整理出版,书名《算法竞赛专题解析》。 前驱教材是:《算法竞赛入门到进阶》(京东 当当 ) 清华大学出版社。 如有建议,请联系:(1)QQ 群,567554289;(2)作者QQ,15512356 1、引子 提到状态压缩DP时,常常用Hamilton问题作为引子。 最短Hami ...
分类:
编程语言 时间:
2020-05-30 00:59:33
阅读次数:
77
当时参加周赛的时候没做出来,后来通过看题解,学习到了状态压缩dp,对于这一题是理解了,但是状态压缩dp运用的还不是特别好。记录一下解题过程。 来源:力扣(LeetCode) 链接:https://leetcode cn.com/problems/number of ways to wear diff ...
分类:
其他好文 时间:
2020-05-04 15:10:39
阅读次数:
98
LINK: "死亡之树" 关于去重 还是有讲究的。 题目求本质不同的 具有k个叶子节点的树的个数 不能上矩阵树。 点数很少容易想到装压dp 考虑如何刻画树的形状 发现一个维度做不了 所以。 设状态 f[i][j]表示 点的集合为i叶子集合的点为j的方案树。 这样我们就能知道这棵树大致的样子 空间 为 ...
分类:
其他好文 时间:
2020-05-01 16:56:06
阅读次数:
59