UVa10817

题目大意

某校有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])



代码

<a target=_blank id="L1" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L1" rel="#L1" style="color: rgb(102, 102, 102); text-decoration: none;">  1</a>
<a target=_blank id="L2" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L2" rel="#L2" style="color: rgb(102, 102, 102); text-decoration: none;">  2</a>
<a target=_blank id="L3" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L3" rel="#L3" style="color: rgb(102, 102, 102); text-decoration: none;">  3</a>
<a target=_blank id="L4" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L4" rel="#L4" style="color: rgb(102, 102, 102); text-decoration: none;">  4</a>
<a target=_blank id="L5" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L5" rel="#L5" style="color: rgb(102, 102, 102); text-decoration: none;">  5</a>
<a target=_blank id="L6" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L6" rel="#L6" style="color: rgb(102, 102, 102); text-decoration: none;">  6</a>
<a target=_blank id="L7" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L7" rel="#L7" style="color: rgb(102, 102, 102); text-decoration: none;">  7</a>
<a target=_blank id="L8" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L8" rel="#L8" style="color: rgb(102, 102, 102); text-decoration: none;">  8</a>
<a target=_blank id="L9" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L9" rel="#L9" style="color: rgb(102, 102, 102); text-decoration: none;">  9</a>
<a target=_blank id="L10" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L10" rel="#L10" style="color: rgb(102, 102, 102); text-decoration: none;"> 10</a>
<a target=_blank id="L11" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L11" rel="#L11" style="color: rgb(102, 102, 102); text-decoration: none;"> 11</a>
<a target=_blank id="L12" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L12" rel="#L12" style="color: rgb(102, 102, 102); text-decoration: none;"> 12</a>
<a target=_blank id="L13" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L13" rel="#L13" style="color: rgb(102, 102, 102); text-decoration: none;"> 13</a>
<a target=_blank id="L14" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L14" rel="#L14" style="color: rgb(102, 102, 102); text-decoration: none;"> 14</a>
<a target=_blank id="L15" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L15" rel="#L15" style="color: rgb(102, 102, 102); text-decoration: none;"> 15</a>
<a target=_blank id="L16" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L16" rel="#L16" style="color: rgb(102, 102, 102); text-decoration: none;"> 16</a>
<a target=_blank id="L17" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L17" rel="#L17" style="color: rgb(102, 102, 102); text-decoration: none;"> 17</a>
<a target=_blank id="L18" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L18" rel="#L18" style="color: rgb(102, 102, 102); text-decoration: none;"> 18</a>
<a target=_blank id="L19" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L19" rel="#L19" style="color: rgb(102, 102, 102); text-decoration: none;"> 19</a>
<a target=_blank id="L20" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L20" rel="#L20" style="color: rgb(102, 102, 102); text-decoration: none;"> 20</a>
<a target=_blank id="L21" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L21" rel="#L21" style="color: rgb(102, 102, 102); text-decoration: none;"> 21</a>
<a target=_blank id="L22" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L22" rel="#L22" style="color: rgb(102, 102, 102); text-decoration: none;"> 22</a>
<a target=_blank id="L23" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L23" rel="#L23" style="color: rgb(102, 102, 102); text-decoration: none;"> 23</a>
<a target=_blank id="L24" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L24" rel="#L24" style="color: rgb(102, 102, 102); text-decoration: none;"> 24</a>
<a target=_blank id="L25" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L25" rel="#L25" style="color: rgb(102, 102, 102); text-decoration: none;"> 25</a>
<a target=_blank id="L26" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L26" rel="#L26" style="color: rgb(102, 102, 102); text-decoration: none;"> 26</a>
<a target=_blank id="L27" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L27" rel="#L27" style="color: rgb(102, 102, 102); text-decoration: none;"> 27</a>
<a target=_blank id="L28" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L28" rel="#L28" style="color: rgb(102, 102, 102); text-decoration: none;"> 28</a>
<a target=_blank id="L29" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L29" rel="#L29" style="color: rgb(102, 102, 102); text-decoration: none;"> 29</a>
<a target=_blank id="L30" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L30" rel="#L30" style="color: rgb(102, 102, 102); text-decoration: none;"> 30</a>
<a target=_blank id="L31" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L31" rel="#L31" style="color: rgb(102, 102, 102); text-decoration: none;"> 31</a>
<a target=_blank id="L32" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L32" rel="#L32" style="color: rgb(102, 102, 102); text-decoration: none;"> 32</a>
<a target=_blank id="L33" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L33" rel="#L33" style="color: rgb(102, 102, 102); text-decoration: none;"> 33</a>
<a target=_blank id="L34" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L34" rel="#L34" style="color: rgb(102, 102, 102); text-decoration: none;"> 34</a>
<a target=_blank id="L35" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L35" rel="#L35" style="color: rgb(102, 102, 102); text-decoration: none;"> 35</a>
<a target=_blank id="L36" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L36" rel="#L36" style="color: rgb(102, 102, 102); text-decoration: none;"> 36</a>
<a target=_blank id="L37" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L37" rel="#L37" style="color: rgb(102, 102, 102); text-decoration: none;"> 37</a>
<a target=_blank id="L38" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L38" rel="#L38" style="color: rgb(102, 102, 102); text-decoration: none;"> 38</a>
<a target=_blank id="L39" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L39" rel="#L39" style="color: rgb(102, 102, 102); text-decoration: none;"> 39</a>
<a target=_blank id="L40" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L40" rel="#L40" style="color: rgb(102, 102, 102); text-decoration: none;"> 40</a>
<a target=_blank id="L41" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L41" rel="#L41" style="color: rgb(102, 102, 102); text-decoration: none;"> 41</a>
<a target=_blank id="L42" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L42" rel="#L42" style="color: rgb(102, 102, 102); text-decoration: none;"> 42</a>
<a target=_blank id="L43" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L43" rel="#L43" style="color: rgb(102, 102, 102); text-decoration: none;"> 43</a>
<a target=_blank id="L44" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L44" rel="#L44" style="color: rgb(102, 102, 102); text-decoration: none;"> 44</a>
<a target=_blank id="L45" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L45" rel="#L45" style="color: rgb(102, 102, 102); text-decoration: none;"> 45</a>
<a target=_blank id="L46" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L46" rel="#L46" style="color: rgb(102, 102, 102); text-decoration: none;"> 46</a>
<a target=_blank id="L47" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L47" rel="#L47" style="color: rgb(102, 102, 102); text-decoration: none;"> 47</a>
<a target=_blank id="L48" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L48" rel="#L48" style="color: rgb(102, 102, 102); text-decoration: none;"> 48</a>
<a target=_blank id="L49" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L49" rel="#L49" style="color: rgb(102, 102, 102); text-decoration: none;"> 49</a>
<a target=_blank id="L50" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L50" rel="#L50" style="color: rgb(102, 102, 102); text-decoration: none;"> 50</a>
<a target=_blank id="L51" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L51" rel="#L51" style="color: rgb(102, 102, 102); text-decoration: none;"> 51</a>
<a target=_blank id="L52" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L52" rel="#L52" style="color: rgb(102, 102, 102); text-decoration: none;"> 52</a>
<a target=_blank id="L53" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L53" rel="#L53" style="color: rgb(102, 102, 102); text-decoration: none;"> 53</a>
<a target=_blank id="L54" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L54" rel="#L54" style="color: rgb(102, 102, 102); text-decoration: none;"> 54</a>
<a target=_blank id="L55" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L55" rel="#L55" style="color: rgb(102, 102, 102); text-decoration: none;"> 55</a>
<a target=_blank id="L56" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L56" rel="#L56" style="color: rgb(102, 102, 102); text-decoration: none;"> 56</a>
<a target=_blank id="L57" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L57" rel="#L57" style="color: rgb(102, 102, 102); text-decoration: none;"> 57</a>
<a target=_blank id="L58" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L58" rel="#L58" style="color: rgb(102, 102, 102); text-decoration: none;"> 58</a>
<a target=_blank id="L59" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L59" rel="#L59" style="color: rgb(102, 102, 102); text-decoration: none;"> 59</a>
<a target=_blank id="L60" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L60" rel="#L60" style="color: rgb(102, 102, 102); text-decoration: none;"> 60</a>
<a target=_blank id="L61" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L61" rel="#L61" style="color: rgb(102, 102, 102); text-decoration: none;"> 61</a>
<a target=_blank id="L62" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L62" rel="#L62" style="color: rgb(102, 102, 102); text-decoration: none;"> 62</a>
<a target=_blank id="L63" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L63" rel="#L63" style="color: rgb(102, 102, 102); text-decoration: none;"> 63</a>
<a target=_blank id="L64" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L64" rel="#L64" style="color: rgb(102, 102, 102); text-decoration: none;"> 64</a>
<a target=_blank id="L65" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L65" rel="#L65" style="color: rgb(102, 102, 102); text-decoration: none;"> 65</a>
<a target=_blank id="L66" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L66" rel="#L66" style="color: rgb(102, 102, 102); text-decoration: none;"> 66</a>
<a target=_blank id="L67" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L67" rel="#L67" style="color: rgb(102, 102, 102); text-decoration: none;"> 67</a>
<a target=_blank id="L68" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L68" rel="#L68" style="color: rgb(102, 102, 102); text-decoration: none;"> 68</a>
<a target=_blank id="L69" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L69" rel="#L69" style="color: rgb(102, 102, 102); text-decoration: none;"> 69</a>
<a target=_blank id="L70" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L70" rel="#L70" style="color: rgb(102, 102, 102); text-decoration: none;"> 70</a>
<a target=_blank id="L71" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L71" rel="#L71" style="color: rgb(102, 102, 102); text-decoration: none;"> 71</a>
<a target=_blank id="L72" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L72" rel="#L72" style="color: rgb(102, 102, 102); text-decoration: none;"> 72</a>
<a target=_blank id="L73" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L73" rel="#L73" style="color: rgb(102, 102, 102); text-decoration: none;"> 73</a>
<a target=_blank id="L74" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L74" rel="#L74" style="color: rgb(102, 102, 102); text-decoration: none;"> 74</a>
<a target=_blank id="L75" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L75" rel="#L75" style="color: rgb(102, 102, 102); text-decoration: none;"> 75</a>
<a target=_blank id="L76" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L76" rel="#L76" style="color: rgb(102, 102, 102); text-decoration: none;"> 76</a>
<a target=_blank id="L77" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L77" rel="#L77" style="color: rgb(102, 102, 102); text-decoration: none;"> 77</a>
<a target=_blank id="L78" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L78" rel="#L78" style="color: rgb(102, 102, 102); text-decoration: none;"> 78</a>
<a target=_blank id="L79" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L79" rel="#L79" style="color: rgb(102, 102, 102); text-decoration: none;"> 79</a>
<a target=_blank id="L80" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L80" rel="#L80" style="color: rgb(102, 102, 102); text-decoration: none;"> 80</a>
<a target=_blank id="L81" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L81" rel="#L81" style="color: rgb(102, 102, 102); text-decoration: none;"> 81</a>
<a target=_blank id="L82" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L82" rel="#L82" style="color: rgb(102, 102, 102); text-decoration: none;"> 82</a>
<a target=_blank id="L83" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L83" rel="#L83" style="color: rgb(102, 102, 102); text-decoration: none;"> 83</a>
<a target=_blank id="L84" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L84" rel="#L84" style="color: rgb(102, 102, 102); text-decoration: none;"> 84</a>
<a target=_blank id="L85" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L85" rel="#L85" style="color: rgb(102, 102, 102); text-decoration: none;"> 85</a>
<a target=_blank id="L86" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L86" rel="#L86" style="color: rgb(102, 102, 102); text-decoration: none;"> 86</a>
<a target=_blank id="L87" href="http://blog.youkuaiyun.com/shuangde800/article/details/9776645#L87" rel="#L87" style="color: rgb(102, 102, 102); text-decoration: none;"> 87</a>
           
/**==========================================
* This is a solution for ACM/ICPC problem
*
* @problem: UVA 10817 - Headmaster's Headache
* @type: dp
* @author: shuangde
* @blog: blog.youkuaiyun.com/shuangde800
* @email: zengshuangde@gmail.com
*===========================================*/
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<queue>
#include<cmath>
#include<cstring>
using namespace std ;
typedef long long int64 ;
const int INF = 0x3f3f3f3f ;
const double PI = acos ( - 1.0 );
const int MAXN = 150 ;
int courseNum , m , n , sum ;
int maxState ;
int f [ 1 << 8 ][ 1 << 8 ];
int p [ MAXN ], c [ MAXN ], cnt [ 10 ];
int dp ( int st1 , int st2 ){
memset ( f , 0x3f , sizeof ( f ));
f [ st1 ][ st2 ] = sum ;
for ( int i = m + 1 ; i <= n + m ; ++ i ){
for ( int s1 = maxState ; s1 >= 0 ; -- s1 ){
for ( int s2 = maxState ; s2 >= 0 ; -- s2 ){
if ( f [ s1 ][ s2 ] >= INF ) continue ;
int st1 = ( p [ i ] | s1 );
int st2 = ( p [ i ] & s1 ) | s2 ;
f [ st1 ][ st2 ] = min ( f [ st1 ][ st2 ], f [ s1 ][ s2 ] + c [ i ]);
}
}
}
return f [ maxState ][ maxState ];
}
int main (){
char str [ 1000 ];
while ( ~ scanf ( "%d%d%d" , & courseNum , & m , & n ) && courseNum ){
maxState = ( 1 << courseNum ) - 1 ;
sum = 0 ;
int st1 = 0 , st2 = 0 ;
memset ( cnt , 0 , sizeof ( cnt ));
for ( int i = 1 ; i <= m + n ; ++ i ){
scanf ( "%d" , & c [ i ]);
gets ( str );
p [ i ] = 0 ;
for ( int j = 0 ; j < strlen ( str ); ++ j ){
if ( isdigit ( str [ j ])){
int num = str [ j ] - '0' ;
p [ i ] |= 1 << ( num - 1 );
if ( i <= m ) ++ cnt [ num - 1 ];
}
}
if ( i <= m ){
sum += c [ i ];
st1 |= p [ i ];
}
}
for ( int i = 0 ; i < courseNum ; ++ i )
if ( cnt [ i ] > 1 ) st2 |= ( 1 << i );
printf ( "%d \n " , dp ( st1 , st2 ));
}
return 0 ;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值