"题面" 看到数据范围这么小,第一眼想到爆搜。 然而这样做的复杂度是 $\mathcal{O}(n! \times n)$ 的,明显会 TLE。 于是考虑状压 DP。 我们设 $dp_{i,j}$ 表示当前走过的集合为 $i$,且停留在 $j$ 号点的最短路径长度。 转移的话可以枚举一个点 $k$, ...
题目网址:http://poj.org/problem?id=1038 题意:给出一张N*M的格子纸,其中有一些坏格子,问最多可以在格子纸上切下多少个2*3(3*2)的小矩阵(不包含坏格子)。其中N<=150, M<=10。 做法: 容易发现对于右端在第i列的小矩阵,其能否摆放只和i-1, i-2列 ...
分类:
其他好文 时间:
2020-02-13 18:47:46
阅读次数:
72
题意:n个顶点带权无向图,求最短hamilton路径长度(从起点0走到终点n-1,且经过每个顶点恰好一次的路径) 在看位运算的时候做到这题,觉得状态压缩的思路挺奇特的。本来n<20,O(n!*n)的算法肯定炸了,但是可以二进制表示状态 如果将i表示为二进制,i的第j位走过就为1,没走过就为0(注意二 ...
分类:
其他好文 时间:
2020-02-12 20:31:58
阅读次数:
61
高维前缀和 众所周知, FWT可以轻松的算出高维前缀和 本题题解: 考虑状压$dp$(~~题目都说了$2^M$那就状压了~~)因为$\%c[i]$和$\&a[i 1]$这两个操作都和具体的数值有关 $F[i][j]$表示枚举到$i$, 第$i$个数填$j$有多少种方案 $$ F[i][j] = \b ...
分类:
其他好文 时间:
2020-02-11 00:17:26
阅读次数:
70
Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every teacher gives him a deadline of handing in the ho ...
分类:
其他好文 时间:
2020-02-09 20:41:02
阅读次数:
59
Problem Description "互不侵犯" 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 Analysis of ideas 把每一行的每一个状态用一个二进制数表示 定义dp[i][j ...
分类:
其他好文 时间:
2020-02-08 13:30:12
阅读次数:
43
网络流 最大流和最小费用最大流原理 上下界网络流 模拟费用流 网络流建模总结 带花树 树 树上倍增 树链剖分 点分治 基环树 DP 概率期望dp 单调队列dp 状压dp 斜率优化dp 计算几何 模板 半平面交 好题 数据结构 线段树高级应用 可持久化线段树 Treap Splay 可持久化平衡树 树 ...
分类:
编程语言 时间:
2020-02-05 09:27:29
阅读次数:
86
状态压缩DP [TOC] 1.状态压缩的定义 状态压缩的定义:我们知道任何一个二进制都可以对应唯一的十进制数,反过来也成立。 所以我们可以用一个数来代替一组数从而降低维数 。这种解题手段我们叫做状态压缩。 举个例子:如果数组中的某一行全是0或全是1,例如000,001,我们可以将000用0表示,00 ...
分类:
其他好文 时间:
2020-02-02 23:42:04
阅读次数:
103
"Link" 设$a_i$总共除过$b_i$次,那么我们要做的就是找到一组$b$使得$\sum\limits_{i=0}^na_ik^{ b_i}=1$。 显然存在合法的$b$就存在一组合法的合并方案,具体的求解可以dfs。 考虑状压dp,设$f_{s,x}$表示存在一组$b$使得$\sum\lim ...
分类:
其他好文 时间:
2020-01-31 22:43:28
阅读次数:
94
二维状压写成一维状压,省略加上第i条边这一维 1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 vector<pair<int,int> >v[57]; 5 long long dp[1 ...
分类:
其他好文 时间:
2020-01-29 19:30:56
阅读次数:
77