uva 10817 Headmaster's Headache 出发dp 位计算

uva 10817 Headmaster's Headache 出发dp 位计算

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

出发dp,用在一些议题的操作非常~ 

给出s个课程。m个教师。n个求职者,教师必须招聘。然后招聘一些求职者,使得每一门课都至少有两个老师能教。问题就转换成了招聘哪些求职者使得花费最少。由于s范围小于8。则能够用二进制表示,用集合s1表示恰好有一个人教的课的集合,用集合s2表示有两个人教的课的集合,则每次状态转移即为选择这名求职者还是不选(教师必须选)详细看代码。

 

d(i,s1,s2) = min{ d(i+1,s1′,s2′)+c[i],d(i+1,s1,s2)} 第一项表示聘用,第二项表示不聘用。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#define mem(name,value) memset(name,value,sizeof(name))
#define FOR(i,n) for(int i=1;i<=n;i++)
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=130;
const int maxs=8;
int n,m,s,d[maxn][1<<maxs][1<<maxs],st[maxn],c[maxn];//st表示第i个人能够教的课程的集合。c表示花费
void init(){
    mem(d,-1); mem(st,0); mem(c,0);
    for(int i=0;i<m+n;i++){
        scanf("%d",c+i);
        while(1){
            int t; char c1;
            scanf("%d",&t);
            st[i] |= (1<<(t-1));
            c1 = getchar();
            if(c1=='\n') break;
        }
    }
}
int dp(int i,int s0,int s1,int s2){ //s0 表示恰好一个人都没有教的课的集合。也能够用s1和s2算出来。
    if(i==m+n) return s2==(1<<s)-1?0:inf;
    //假设已经考虑到第m+n个人了,编号是1~m+n-1,则人已经选完。若s2集合中没有全部课。则不符合题意。
    int& ans = d[i][s1][s2];
    if(ans!=-1) return ans;
    ans = inf;
    if(i>=m) ans = dp(i+1,s0,s1,s2);    //仅仅有当选择求职者的时候才用考虑是否聘用。

int m0 = st[i]&s0, m1 = st[i]&s1; //m0表示在一个人都没有教的课中,第i个人能够教哪些,m1同理。

s0=s0^m0; s1=(s1^m1)|m0; s2=s2|m1; //将s0中有人教的课去掉。算到s1上。s2同理 ans = min(ans,c[i]+dp(i+1,s0,s1,s2)); //和不聘用的价格比較 return ans;}int main(){ // freopen("in.txt","r",stdin); while(~scanf("%d%d%d",&s,&m,&n) && s && m &&n){ init(); int ans = dp(0,(1<<s)-1,0,0); //答案为还没考虑不论什么一个人,和没有不论什么一门课有人教 printf("%d\n",ans); } return 0;}

 

 

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117670.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 美团风控订单_美团到家事业群

    美团风控订单_美团到家事业群美团技术沙龙01 – 58到家服务的订单调度&数据分析技术

    2022年4月20日
    59
  • python进阶(15)多线程与多进程效率测试「建议收藏」

    python进阶(15)多线程与多进程效率测试「建议收藏」前言在Python中,计算密集型任务适用于多进程,IO密集型任务适用于多线程正常来讲,多线程要比多进程效率更高,因为进程间的切换需要的资源和开销更大,而线程相对更小,但是我们使用的Python大多

    2022年7月31日
    6
  • 直接学 Vue 3 吧 —— 对话 Vue.js 作者尤雨溪[通俗易懂]

    直接学 Vue 3 吧 —— 对话 Vue.js 作者尤雨溪[通俗易懂]《程序员》于2000年创刊,其理念为技术改变世界,创新驱动中国。2021年,《程序员》2.0全新起航,首期以「开发者的黄金十年」为主题,以音视频、图文专栏等丰富的多媒体形式为载体,立足当下,放眼未来,为读者带来全方位的技术和产业解读。本文为《程序员》2.0第一期内容,在UNIX开发者BrianW.Kernighan之后,我们采访到Vue.js的作者尤雨溪,与其共谈精彩程序人生、共论顶级开源项目的成功之道。从复杂的jQuery插件化开发到模块化及组件化,现代前端技术在迭代.

    2022年4月29日
    101
  • resnet18 pytorch_pytorch全连接层

    resnet18 pytorch_pytorch全连接层创建各版本的ResNet模型,ResNet18,ResNet34,ResNet50,ResNet101,ResNet152原文地址:https://arxiv.org/pdf/1512.03385.pdf论文就不解读了,大部分解读都是翻译,看的似懂非懂,自己搞懂就行了。最近想着实现一下经典的网络结构,看了原文之后,根据原文代码结构开始实现。起初去搜了下各种版本的实现,发现很多博客都是错误百出,有些博文都发布几年了,错误还是没人发现,评论区几十号人不知道是真懂还是装懂,颇有些无奈啊。因此打算自己手动实

    2022年10月7日
    5
  • yuicompressor java_YUI Compressor使用配置方法 JS/CSS压缩工具

    yuicompressor java_YUI Compressor使用配置方法 JS/CSS压缩工具YUICompressor是一个用来压缩JS和CSS文件的工具,采用Java开发。YUICompressor下载地址:https://www.jb51.net/softs/25860.html使用方法://压缩JSjava-jaryuicompressor-2.4.2.jar–typejs–charsetutf-8-vsrc.js>packed.js//…

    2022年7月18日
    21
  • fec基础_普通独立基础

    fec基础_普通独立基础 昨天休息了一下,思考一下可以研究的点,觉得这个fec还可以,就找了一点资料研究一下。 先跑点题,闲扯一会。在找资料的过程中,能找到的资料就很少,就有点感叹。科研为什么弱呢?可以看下90年代的论文,那水平略等于今天的一篇博客。这是积贫积弱到现在。 [1]中有段代码,求解伽罗华域的生成空间的。举的例子是GF(256),使用的本原多项式P(x)=x8+x5+x3+x2+1P(x)=x^8+x^5…

    2022年8月11日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号