动态规划-状压DP
tzb592825420
这个作者很懒,什么都没留下…
展开
-
hdu3681Prison Break 状压dp TSP 二分
点击打开链接题意:机器人逃狱,需把所有开关Y遍历才能成功,G可以使机器人充满电(只能使用一次,也可暂时不用),D不能走,S为空,走一步要消耗一格电,没电无法继续走,问机器人能逃出去起始需要具有的最少电量。思路:把G,Y抽离出来建立一张图,预处理任意两点的最短距离(bfs),G和Y都只通过一次(这里并不意味着走到G就必须用掉,很明显由于是最短路径,用掉是最优解,有些G可能包含在最短路径之中通原创 2015-01-05 00:22:36 · 637 阅读 · 0 评论 -
hdu4284 Realtime Status 状压dp TSP问题 最短路
#include#include#include#include#include#include#include#include#include#include#define inf 1000000000#define pi acos(-1.0)#define eps 1e-8#define seed 131using namespace std;typedef pa原创 2015-01-06 13:28:47 · 577 阅读 · 0 评论 -
codeforces 417D Cunning Gena
题意:有m道题,要分给n个朋友解决,每个朋友有不同的条件,酬劳,且每个朋友要至少k个显示器连接作者电脑才肯帮忙,所以作者需要买至少k个显示器。求解决所有问题所需最少的钱。分析:可以状压20个问题,实际是二维,dp[i][s]表示用前i个人解决s(二进制,解决问题的集合)所需最少钱,由于爆内存可省略第一维。正确的做法是先根据显示器数目将朋友排序,我纠结的是不排序维护一个mx数组表示s状态显示器的原创 2015-01-30 21:47:00 · 524 阅读 · 0 评论 -
cf 401D. Roman and Numbers 数位dp,状压
题意:给出两个数n,m,求x的个数,x需满足,x可由n的各位数字重新排列得到;x无前导零;x%m==0;分析:比较简单的一道数位dp,由于n最多只有17位,可以状态压缩,dp[s][v]表示用掉集合s中的数,余数为v的个数,状态转移方程dp[s+k][(v*10+dig[k])%m]+=dp[s][v];#include#include#include#include#includ原创 2015-02-04 23:05:55 · 574 阅读 · 0 评论 -
zoj3777 Problem Arrangement
题意:n道题目放在n个位置,任意题目放在任意位置会得到一个分数,求总分>=m的方案数;也可以看成在n*n矩阵中选n个不同行不同列的数。分析:dp[i][s][k]表示前i个数放在s集合的这些位置得分为k的方案数,s是现在各位置的状态,可以省略i这一维,s已经包含前多少个位置的信息了,而且可以由s递推之后的状态,这是因为由s递推其他状态时,s已经被递推完成了。#include#includ原创 2015-03-24 14:10:50 · 438 阅读 · 0 评论 -
hdu5103 RootedTree 状压dp,树形dp
这题说的是给了n(14)个点,每个点都以他 为根的最大可容的孩子个数和最小的可溶孩子个数L[i] ,R[i]问这n个点形成一棵树有多少种形态我们让 dp[i][S] 表示 一 i为根节点 的 拥有孩子S(二进制数)状态的 方案数 , sub[S] , 表示 以 S 状态表示的 森林的 方案数, sum[S] 表示 一S 状态的 有根树 的 方案数可以知道 dp[i]原创 2015-08-18 23:34:20 · 1052 阅读 · 0 评论