题意:某个学校有m个老师和n个求职者,需要讲授s个课程,已知每个人的工资c和能交的课程,求花费最小使得每门课程都至少有两个人教。

思路:状压dp,将每个老师要交的课程压缩成一个数,然后对于每门课,找到每个老师教与不交的最小状态即可。(因为INF还被坑了几次??)

code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <sstream>
#include <string>
#include <vector>
#include <list>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <bitset>using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;const int INF=9999999;
const int inf=-INF;
const int N=125;
const int M=2005;
const int mod=1000000007;
const double pi=acos(-1.0);#define cls(x,c) memset(x,c,sizeof(x))
#define ft(i,s,n) for (int i=s;i<=n;i++)
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define lrt  rt<<1
#define rrt  rt<<1|1
#define middle int m=(r+l)>>1
#define lowbit(x) (x&-x)
#define pii pair<int,int>
#define mk make_pair
#define IN freopen("in.txt","r",stdin);
#define OUT freopen("out.txt","w",stdout);int n,m,s,c[N],st[N],d[N][1<<8][1<<8];int dp(int i,int s0,int s1,int s2)
{if (i==m+n) { if (s2==((1<<s)-1)) return 0; return INF;}int& ans=d[i][s1][s2];if (ans>=0) return ans;ans=INF;if (i>=m) ans=min(ans,dp(i+1,s0,s1,s2));int m=st[i]&s0,m1=st[i]&s1;//s0^=m0; s1=(s1^m1)|m0;s2|=m1;ans=min(ans,c[i]+dp(i+1,s0^m,(s1^m1)|m,s2|m1));return ans;
}
int main()
{while (~scanf("%d %d %d",&s,&m,&n),s){ft(i,0,n+m-1){scanf("%d",&c[i]);st[i]=0;char ch=getchar();while (ch!='\n'){if (ch>='1'&&ch<='9') {int t=ch-'1';st[i]=(st[i]|(1<<t));}ch=getchar();}//cout<<st[i]<<endl;}cls(d,-1);printf("%d\n",dp(0,(1<<s)-1,0,0));}
}

uva 10817——Headmaster's Headache相关推荐

  1. 状压DP UVA 10817 Headmaster's Headache

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

  2. UVA - 10817 Headmaster's Headache

    题目大意:有一些老师,每一位都有自己的工资以及教授的课程.共s<=8个课程.其中的一些老师必须选择,问你保证每节课至少有一个老师的最少总工资. 题解: 首先很容易想到状态压缩,搞一个3进制的数, ...

  3. Uva 10817 校长的烦恼

    题目链接:https://uva.onlinejudge.org/external/108/10817.pdf 题意:m个教师,n个应聘者,s个课程,每个人的工资为c,每个人能教一些课程.求最少的支付 ...

  4. Headmaster's Headache

    题意: s门课程,现任老师有m个给出工资,和他们能教的课,现在有n个应聘的老师,给出费用和能教的课程标号,求使每门课都至少有两个老师教的最小花费 分析: n个老师选或不选有背包的特征,n很小想到用状压 ...

  5. 紫书《算法竞赛入门经典》

    紫书<算法竞赛入门经典>题目一览 第3章 数组和字符串(例题) UVA 272 TEX Quotes UVA 10082 WERTYU UVA 401 Palindromes UVA 34 ...

  6. 提取了下刘汝佳推荐的题号...

    今天闲来没事上uva oj提取了下刘汝佳推荐的acm题号,原始数据如下: Volume 0. Getting Started    10055 - Hashmat the Brave Warrior ...

  7. UVa在线比赛单题汇总-----DP专题

    动态规划基础 例题 LA 3882 UVa 3882 - And Then There Was One 递推------------无力orz UVa 10635 10635 - Prince and ...

  8. 《算法竞赛入门经典——训练指南》第一章相关内容

    #<算法竞赛入门经典--训练指南>第一章相关内容 希望各位大牛能指导! 红色为已经做了的...黄色背景是还有不懂地方,希望在年前能刷完第一章啊.... 更新版.google上貌似又加了ex ...

  9. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

最新文章

  1. 每个php允许的内存大小,php – 允许的内存大小为262144字节用尽(试图分配24576字节)...
  2. Kotlin 协程:简单理解 runBlocking, launch ,withContext ,async,doAsync
  3. 内存溢出原因及解决方案
  4. 089-袁佳鹏-实验报告1
  5. Youtube推荐系统是如何挖掘用户内心另一面的
  6. 服务器运行jupyter notebook,解决办法
  7. 5.Java中的常量以及常量的分类
  8. 一直都很喜欢的软件--基于平台
  9. 一步步创建ABAP post exit增强
  10. MAC电脑安装Python3下的Jupyter Notebook
  11. 一个有用的区别IE不同浏览器CSS的标签
  12. LInux之gz文件压缩/解压缩
  13. 中值滤波器 ( Median Filter ) C++ 实现
  14. 修改vCenter client无法连接
  15. 基于php技术的Web的电子病历管理系统
  16. 烧录superboot.bin 到 友善之臂mini2440 开发板
  17. 远程控制,从个人便捷走向企业安全
  18. 51单片机 (四)延时函数
  19. 反向索引和自增索引区别_深度解析 百度收录与百度索引有什么区别?
  20. 后端报错fastJson.Json.toJson错误

热门文章

  1. 问题:jquery给标签添加事件,但标签还未加载会成功吗
  2. XPath语法规则及实例
  3. [Swift]LeetCode86. 分隔链表 | Partition List
  4. NOIP 2012 Day2
  5. Mathematica图片局部变色
  6. Wordpress prettyPhoto插件跨站脚本漏洞
  7. DDD:DomainEvent、ApplicationEvent、Command
  8. Object之MemberwiseClone方法
  9. mysql游标遍历数据库_MySQL数据库中,使用游标循环遍历_MySQL
  10. java能不能修改文件大小信息_java上机考试3