UVA-10817

ans[i][s1][s2]表示考虑前i个人时,有至少1人教的科目集合为s1,有至少2人教的科目集合为s2时的最少工资
集合用一个数字表示,转换成二进制后从后面开始数第i位的状态(1/0)表示第i个科目的状态(满足/不满足某条件)
st[i]表示第i个人能教的课程集合,cost[i]表示第i个人的工资
ans[i][s1'][s2']=min(ans[i-1][s1'][s2'],ans[i-1][s1][s2]+cost[i])
s1'=s1|st[i]
s2'=s2|(s1&st[i])
压缩掉一维:
显然,s1'>=s1,s2'>=s2
因此,ans[s1'][s2']=min(ans[s1'][s2'],ans[s1][s2]+cost[i]) s1和s2从大到小

 #include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char tt[];
int s,m,n,ans1,sa,sb;
int ans[<<][<<];
int st[],cost[];
int main()
{
int i,t,point,maxj,j,j1;
scanf("%d%d%d",&s,&m,&n);
while(s!=)
{
memset(ans,0x3f,sizeof(ans));
memset(st,,sizeof(st));
cin.getline(tt,);
ans1=;
sa=;sb=;
for(i=;i<=m;i++)
{
//memset(tt,'\0',sizeof(tt));
cin.getline(tt,);
point=;
sscanf(tt,"%d",&t);
ans1+=t;
while(tt[point]<=''&&tt[point]>='') ++point;
while(tt[point]==' ') ++point;
while(point<strlen(tt))
{
sscanf(tt+point,"%d",&t);
t=<<(t-);
sb|=sa&t;
sa|=t;
while(tt[point]<=''&&tt[point]>='') ++point;
while(tt[point]==' ') ++point;
}
}
ans[sa][sb]=ans1;
for(i=;i<=n;i++)
{
//memset(tt,'\0',sizeof(tt));
cin.getline(tt,);
point=;
sscanf(tt,"%d",&cost[i]);
while(tt[point]<=''&&tt[point]>='') ++point;
while(tt[point]==' ') ++point;
while(point<strlen(tt))
{
sscanf(tt+point,"%d",&t);
st[i]|=<<(t-);
while(tt[point]<=''&&tt[point]>='') ++point;
while(tt[point]==' ') ++point;
}
}
maxj=(<<s)-;
for(i=;i<=n;i++)
for(j=maxj;j>=;j--)
for(j1=maxj;j1>=;j1--)
{
sa=j|st[i];
sb=j1|(j&st[i]);
ans[sa][sb]=min(ans[sa][sb],ans[j][j1]+cost[i]);
}
printf("%d\n",ans[maxj][maxj]);
scanf("%d%d%d",&s,&m,&n);
}
return ;
}

Headmaster's Headache UVA - 10817的更多相关文章

  1. UVA 10817 十一 Headmaster's Headache

    Headmaster's Headache Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Sub ...

  2. 状压DP UVA 10817 Headmaster's Headache

    题目传送门 /* 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][s2]表示s ...

  3. UVA 10817 Headmaster's Headache(DP +状态压缩)

    Headmaster's Headache he headmaster of Spring Field School is considering employing some new teacher ...

  4. uva 10817

    Problem D: Headmaster's Headache Time limit: 2 seconds The headmaster of Spring Field School is cons ...

  5. uva 10817(数位dp)

    uva 10817(数位dp) 某校有m个教师和n个求职者,需讲授s个课程(1<=s<=8, 1<=m<=20, 1<=n<=100).已知每人的工资c(10000 ...

  6. UVa 10817 - Headmaster's Headache(状压DP)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  7. UVA 10817 - Headmaster's Headache(三进制状压dp)

    题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&pag ...

  8. UVa 10817 (状压DP + 记忆化搜索) Headmaster's Headache

    题意: 一共有s(s ≤ 8)门课程,有m个在职教师,n个求职教师. 每个教师有各自的工资要求,还有他能教授的课程,可以是一门或者多门. 要求在职教师不能辞退,问如何录用应聘者,才能使得每门课只少有两 ...

  9. UVa 10817 Headmaster's Headache (状压DP+记忆化搜索)

    题意:一共有s(s ≤ 8)门课程,有m个在职教师,n个求职教师.每个教师有各自的工资要求,还有他能教授的课程,可以是一门或者多门. 要求在职教师不能辞退,问如何录用应聘者,才能使得每门课只少有两个老 ...

随机推荐

  1. 2017ACM/ICPC广西邀请赛 K- Query on A Tree trie树合并

    Query on A Tree Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Othe ...

  2. ASHX入门教程

    新建web应用程序 其中添加的ashx包含ashx.CS 普通的web网站只包含ashx 新建webapplication应用 新建SampleHandler public class SampleH ...

  3. VK Cup 2016 - Round 1 (Div. 2 Edition) C. Bear and Forgotten Tree 3

    C. Bear and Forgotten Tree 3 time limit per test 2 seconds memory limit per test 256 megabytes input ...

  4. date format记录

    各种日期格式定义,容易忘记,这里备注下: * 支持格式为 yyyy.MM.dd G 'at' hh:mm:ss z 如 '2002-1-1 AD at 22:10:59 PSD'<br> ...

  5. Android 5.x SEAndroid/SElinux内核节点的读写权限【学习笔记】

    本文转载自:http://blog.csdn.net/tung214/article/details/44461985 Android 5.0下,因为采取了SEAndroid/SElinux的安全机制 ...

  6. 控制cms:CMSDropDownList的width

    查找了一下kentico内部使用相关控件的代码,发现有2种方式,可以达到效果. 在我们自己的css class定义的地方,在class前面加上.cms-bootstrap .cms-bootstrap ...

  7. UVA-10125(中途相遇法)

    题意: 给定一个整数集合,找出最大的d,使得a+b+c=d,a,b,c,d是集合中不同的元素; 思路: 如果单纯的枚举a,b,c的复杂度是O(n^3)的,为了降低复杂度,可以先把a+b的情形都找出来, ...

  8. 创建Android本地repo

    /**************************************************************************** * 创建Android本地repo * 说明 ...

  9. Ubuntu bitnami gitlab 安装

    /************************************************************************************** * Ubuntu bit ...

  10. 【HDU 3555】 Bomb

    [题目链接] 点击打开链接 [算法] 数位DP [代码] #include<bits/stdc++.h> using namespace std; #define MAXL 15 type ...