uva 10817 - Headmaster's Headache ( 状态压缩dp)



 

本文出自   http://blog.csdn.net/shuangde800


 

题目链接: 点击打开链接


题目大意

某校有n个教师和m个求职者,已知每人的工资和能教的课程集合,要求支付最少的工资使得每门课都至少有两名教师教学。在职教师必须招聘。


思路

这题不太好想,搞了很久。。

f[s1][s2]: s1表示课程集合{ s1 }都至少有一个教师教的情况。

               s2表示课程集合{ s2 }都至少有两个教师教的情况。


每个求职者的pi, 对于每个求职者,要么选,要么不选,就是01背包问题。

对于s1,s2,可以根据当前枚举到的求职者课程即可,可推出下一个状态:

nextS1 = p[i] | s1,

nextS2 = (p[i] & s1) | s2

f[nextS1][nextS2] = min(f[nextS1][nextS2], f[s1][s2] + p[i])



代码

 

 


posted @ 2013-08-06 18:03  坚固66  阅读(114)  评论(0编辑  收藏  举报