状态压缩dp
HelloWorld10086
追随大神的脚步
展开
-
UVA 10817 Headmaster's Headache(dp 状态压缩 01背包)
题目大意: 春田花花小学的校长正在考虑聘用一些新教师来交某些科目,有许多的教师提交简历。 每个教师能交一个或者更多的科目,校长想选择这些应聘者来教书,目的是让每个科目可以都有两个老师可以教书,并且然总花费最小。输入: s,m,n,s代表科目数量,m代表现职教师的人数,n代表应聘者的人数。 接下来m行输入现职教师的工资和可以教的科目,n行输入应聘者的工资和可以交的科目。 你必须全部雇佣现职教原创 2015-02-07 15:03:28 · 530 阅读 · 0 评论 -
Fzu 2186 小明的迷宫(状态压缩dp + bfs)
解析: 看了网络上其他人的代码,才明白怎么做。 先用BFS算出,每个点到其他点间的距离,即每个财宝之间的最短路(包括起点),然后状压最短路处理。 具体做法: 状态压缩,1表示当前的财宝已经得到,0表示当前的财宝还未得到。 dp[st][i]dp[st][i] 表示当前已经得到财宝为 stst 的情况下的终点为 ii。 那么枚举下一次要到达的点 j。 得出状态转原创 2015-03-24 20:35:24 · 887 阅读 · 0 评论 -
UVA 11795 Mega Man's Mission(状态压缩DP)
题意: 需要打败N个敌人,初始给出了一个武器,武器能打败一些敌人,打败一个敌人之后就能得到敌人的武器,其武器又可以打败另外的一些敌人,可以携带多把武器。 求打败所有敌人的不同顺序数.思路: 注意到N最大只有16,可以用状态压缩来做,把敌人的死亡情况压缩成二进制。 dp[i]表示敌人死亡情况的二进制为i时的方案数 weapon[i]表示敌人死亡情况的二进制位i时,拥有的原创 2015-03-02 19:33:26 · 696 阅读 · 0 评论 -
UVA 11008 Antimatter Ray Clearcutting(状态压缩+记忆化搜索)
题意: n个坐标上面分别有n棵树,每发射一次枪,可以把一条直线上面的树都消灭掉。问要消灭到m棵树,最少需要几枪。解析: 这个题目由于树的数目很少,我们可以把树的状态压缩成一个整数,并依此来进行状态转移。dp[st]表示当前这个状态下面至少要开多少枪。 dp[st] = min(dp[st], dps(cur-cnt, new_st) + 1); 根据这个公式,进行状态转移。A原创 2015-02-22 21:42:43 · 646 阅读 · 0 评论