Headmaster's Headache 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的更多相关文章
- UVA 10817 十一 Headmaster's Headache
Headmaster's Headache Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Sub ...
- 状压DP UVA 10817 Headmaster's Headache
题目传送门 /* 题意:学校有在任的老师和应聘的老师,选择一些应聘老师,使得每门科目至少两个老师教,问最少花费多少 状压DP:一看到数据那么小,肯定是状压了.这个状态不好想,dp[s1][s2]表示s ...
- UVA 10817 Headmaster's Headache(DP +状态压缩)
Headmaster's Headache he headmaster of Spring Field School is considering employing some new teacher ...
- uva 10817
Problem D: Headmaster's Headache Time limit: 2 seconds The headmaster of Spring Field School is cons ...
- uva 10817(数位dp)
uva 10817(数位dp) 某校有m个教师和n个求职者,需讲授s个课程(1<=s<=8, 1<=m<=20, 1<=n<=100).已知每人的工资c(10000 ...
- UVa 10817 - Headmaster's Headache(状压DP)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 10817 - Headmaster's Headache(三进制状压dp)
题目:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=20&pag ...
- UVa 10817 (状压DP + 记忆化搜索) Headmaster's Headache
题意: 一共有s(s ≤ 8)门课程,有m个在职教师,n个求职教师. 每个教师有各自的工资要求,还有他能教授的课程,可以是一门或者多门. 要求在职教师不能辞退,问如何录用应聘者,才能使得每门课只少有两 ...
- UVa 10817 Headmaster's Headache (状压DP+记忆化搜索)
题意:一共有s(s ≤ 8)门课程,有m个在职教师,n个求职教师.每个教师有各自的工资要求,还有他能教授的课程,可以是一门或者多门. 要求在职教师不能辞退,问如何录用应聘者,才能使得每门课只少有两个老 ...
随机推荐
- Delphi和C++的语法区别 (关于构造和析构)
目录 Delphi永远没办法在栈上创建一个对象 Delphi的构造函数更象是个类方法(静态成员函数) Delphi的析构函数中可以调用纯虚方法 Delphi在构造对象时自动将成员变量清零 Delphi ...
- HDU 6061 RXD and functions NTT
RXD and functions Problem Description RXD has a polynomial function f(x), f(x)=∑ni=0cixiRXD has a tr ...
- 为什么java web项目中要使用spring
1 不使用spring的理由 spring太复杂,不利于调试. spring太复杂,不利于全面掌控代码. spring加载bean太慢. 等等. 2 对不使用spring理由的辩驳 spring io ...
- sqlldr trailing nullcols
由于要导入到tmp_content表的一些列(列:要导入的源文件txt or csv文件)为空,也,按理讲我当时另存为(在windows处理)csv,以,分隔.就是这个列没有内容,也该显示, ,之类的 ...
- 【转】【录教程必备】推荐几款屏幕录制工具(可录制GIF)
我们经常会遇到一些场景,需要你向别人展示一些操作或是效果——例如告诉别人某某软件的配置步骤啊.刚设计出来网站的动画效果怎么样啊.某某电影里面的一个镜头多么经典啊.打得大快人心的NBA绝杀瞬间是怎么回事 ...
- spring核心框架体系结构(各个jar包作用)
转自:https://blog.csdn.net/sunchen2012/article/details/53939253 弄懂spring就是弄懂spring各个jar包的作用 spring的jar ...
- 进程调度函数schedule()分析
1.功能简述: 最主要作用就是 从就绪进程中选择一个优先级最高的进程来代替当前进程运行. 2.代码分析 schedule(); struct task_struct *tsk = cur ...
- vue开发购物车,解决全选单选问题
实现全选单选,在vue中无法通过this获取input中的checkbox的checked属性,但是可以通过vue对input的特殊方式v-model来实现对应数据的绑定,同样也可以通过这种方式实现购 ...
- hdu 1711 Number Sequence 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 题目意思:给出一条有n个数的序列a[1],a[2],......,a[n],和一条有m 个数的序 ...
- 【转载】Android Studio简单设置
界面设置 默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面.Settings --> Appearance --> Theme ,选择 Darcula 主题即可 ...