UVA-10817 Headmaster's Headache

国产麒麟系统下Kettle安装避坑指南:解决aarch64架构不兼容问题 本文针对在国产麒麟系统上安装Kettle时遇到的aarch64架构不兼容问题,提供了详细的解决方案。通过剖析错误根源,指导用户获取并放置正确的SWT库文件,并修改启动脚本,成功解决“平台不支持”的报错,确保ETL工具在ARM架构的国产化环境中顺利运行。 阅读详情

题目大意:

有s个学科,现在在学校有n个教师在教书,这些教师必须要被雇佣,现在还有m个教师正在应聘。现在给出这n个在职教师的工资和能教的科目,给出m个应聘教师的工资和能教的科目,现在希望这s个科目,每个都有至少两个教师教授,问你最少需要支付的工资是多少。

解题思路:

动态规划。状压DP。

dp[i]表示i这个状态需要支付的最少工资。因为每个科目至少两个教师,且最多只有8个科目,所以很明显状压DP。

设状态st,st有2*s有效位,低s位表示s个科目有一个教师,高s位也表示s个科目有一个教师。当2*s位都为1的时候表示最少能满足要求的状态。

设状态tt,表示第i个教师能教授科目的状态。

那么状态转移就可以写为:

dp[st | tt] = dp[st] + c[i]

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

const int maxn = 105;
const int INF = 0x3f3f3f3f;
const int maxm = (1 << 16) + 10;

int s, m, n;
int tot, vis[10], tt[257];
int a[10], c[maxn], dp[maxm], ss[maxn][10];

bool judge(int a, int b) {
	while (b) {
		if ((b & 1) && !(a & 1)) return false;
		b >>= 1; a >>= 1;
	}
	return true;
}
void dfs(int p, int st, int j) {
	if (p == ss[j][0]) {
		tt[tot++] = st | (1 << (ss[j][p] - 1));
		tt[tot++] = st | (1 << (ss[j][p] - 1 + s));
		return;
	}

	dfs(p + 1, st | (1 << (ss[j][p] - 1)), j);
	dfs(p + 1, st | (1 << (ss[j][p] - 1 + s)), j);
}
int main() {
	while (~scanf("%d%d%d", &s, &m, &n) && s) {
		memset(a, 0, sizeof(a));
		int tmp, ans = 0; char op;
		for (int i = 0; i < m; ++i) {
			scanf("%d", &tmp); ans += tmp;
			while (scanf("%d%c", &tmp, &op) == 2) {
				++a[tmp - 1];
				if (op == '\n') break;
			}
		}
		for (int i = 1; i <= n; ++i) {
			scanf("%d", &c[i]); int tmp, cnt = 0;
			memset(vis, 0, sizeof(vis));
			while (scanf("%d%c", &tmp, &op) == 2) {
				if (!vis[tmp]) { ss[i][++cnt] = tmp; vis[tmp] = 1; }
				if (op == '\n') break;
			}
			ss[i][0] = cnt;
		}

		int be = 0, st = (1 << (2 * s)) - 1;
		for (int i = 0; i < s; ++i) {
			if (!a[i]) continue;
			else if (a[i] == 1) be += (1 << (i + s));
			else if (a[i] >= 2) be += (1 << i) + (1 << (s + i));
		}

		memset(dp, 0x3f, sizeof(dp));
		dp[be] = 0;
		for (int j = 1; j <= n; ++j) {
			tot = 0;
			dfs(1, 0, j);
			
			for (int i = st; i >= be; --i) {
				if (!judge(i, be)) continue;
				for (int k = 0; k < tot; ++k) {
					if (i == (i | tt[k])) continue;
					dp[i | tt[k]] = min(dp[i | tt[k]], dp[i] + c[j]);
				}
			}
		}
		printf("%d\n", ans + dp[st]);
	}
	return 0;
}


光学传播仿真软件:ASAP_(1).ASAP软件介绍与安装 ASAP(Advanced System for Analysis and Propagation)是一款强大的光学传播仿真软件,广泛应用于光学系统的设计、分析和优化。它提供了丰富的建模工具和仿真功能,可以帮助用户从简单的光学元件到复杂的光学系统进行仿真。:支持光学、机械、热学等多物理场的联合仿真。:采用高精度的算法,确保仿真结果的准确性。:内置了大量的光学元件,如透镜、反射镜、棱镜、光栅等。:提供直观的用户界面,支持多种建模和仿真方式。:支持使用脚本语言进行二次开发,增强软件的定制能力。 阅读详情

相关推荐

深度强化学习研究笔记(1)——入门(马尔科夫决策过程,贝尔曼方程,价值迭代和策略迭代)

1. 强化学习(Reinforcement learning)概述 强化学习(Reinforcement learning)的基本内涵是将问题用代理和环境进行建模。其中代理能够对环境执行一些特定的动作a∈Aa \in Aa∈A,从而到达某个状态s∈Ss \in Ss∈S,然后我们就可以根据该状态为代理赋予特定的奖励rrr。强化学习的基本思想如下图所示: 代理的目标是最大化未来的奖励总和,它通过将...

越野者的博客 5280

第六十一题 UVA10817 校长的烦恼 Headmaster's Headache

The headmaster of Spring Field School is considering employing some new teachers for certain subjects. There are a number of teachers applying for the posts. Each teacher is able to teach one or more ...

苦鬼·。 325

AUTOSAR BswM配置实战:手把手教你用Vector Davinci Configurator搭建第一个模式管理规则

本文详细介绍了如何使用Vector Davinci Configurator工具配置AUTOSAR BswM模块,实现车身控制ECU的模式管理规则。通过实战案例,从环境准备、核心概念梳理到具体配置步骤,包括ModeRequestPort、ModeCondition、Logical Expression和Rules的构建,帮助工程师快速掌握BswM配置技巧,提升汽车电子软件开发效率。

weixin_28678831的博客 353

P1171 售货员的难题 货郎担问题 | Uva10817 校长的烦恼

#include<bits/stdc++.h> #define debug(x) cout<<#x<<" is "<<x<<endl using namespace std; const int N = 25; const int INF = 0x3f3f3f3f; int dist[N][N]; int dp[N][1<<21]; int main(){ int n; cin>>n; for(int i = 0;i

我们仍未知道那天所看见的花的名字。 251

Ubuntu20.04配置PX4环境启动或编译jmavsim 出现的错误及解决办法

错误1:ant命令未找到

Iamsonice的博客 8856

【Arduino】入门篇——交通信号灯

模拟交通信号灯一、实验目的二、实验材料三、电路图四、实验过程五、代码块六、实验结果 一、实验目的 我想大家都看见过交通灯,就是马路上十字路口的红绿灯。如果您开过车,我想您一定仔细观察过交通灯,如果您还没有驾驶过车,您是否仔细观察过交通灯呢?交通灯包括三种个不同颜色的灯:红灯、黄灯和绿灯。 每个路口的红绿灯切换的时间并不是相同,这个是根据不同路口的车流情况来设定的,下面就是模仿交通灯的一个实验 二...

漠宸离若的博客 1万+

uva 10817 - Headmaster's Headache ( 状态压缩dp)

题目大意 某校有n个教师和m个求职者,已知每人的工资和能教的课程集合,要求支付最少的工资使得每门课都至少有两名教师教学。在职教师必须招聘。 思路 这题不太好想,搞了很久。。 f[s1][s2]: s1表示课程集合{ s1 }都至少有一个教师教的情况。 s2表示课程集合{ s2 }都至少有两个教师教的情况。 每个求职者的pi, 对于每个求职者,要么选,要么不选,就是01背包问题。 对于s1,s2,可以根据当前枚举到的求职者课程即可,可推出下一个状态:

D_Double's Journey 3745

FIFO Generate IP核使用——FIFO写操作详解及Status Flags页配置

本文介绍了FIFO的写操作及Status Flags页的配置信息。

u011565038的博客 2285

UVA 10817 Headmaster's Headache

题意: 校长 #include #include #include using namespace std; const int inf = 0x3f3f3f3f; int dp[110][7000], cnt[10], vis[10]; int s, n, m; char str[100]; bool is_digit(char c) { if

做一个善于思考的人 816

华为OD面试手撕真题 - 最大数

华为OD面试手撕真题 最大的数 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 342

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

状态压缩DP UVa10817-Headmaster's Headache

状态压缩是指使用计算机二进制位来存储状态,一般用法是将二进制串当做一个集合,bit位代表集合中的元素,bit位取值表示元素是否在集合中。n位二进制串可以描述2^n种集合(状态),因此对于n的取值是相当严格的。状态压缩DP中需要使用各种位运算来描述状态转换。所以需要对位运算的使用有一定的了解,下面是一些巧妙的运用。 把一个数字x最靠右的第一个1去掉 : x = x & (x-1) 判断数...

wuzy38的博客 3304

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

[UVA 10817]Headmaster's Headache[状压DP]

题目链接:[UVA 10817]Headmaster's Headache[状压DP] 题意分析: 校长需要s门课,每门至少有两名老师来教,所以他现在想要招老师啦。当然,校长手头本来就有m个老师,每个老师都教着一个或多个课程,这些老师是不能解雇的,必须用。然后现在又n个老师来应聘,每个都有价格和他们能教的课程,校长希望花最少的钱达到他的目标,问:最少多少钱呢? 解题思路: 嘛!s = m时

闲停 1575

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

uva10817 Headmaster's Headache

状压dp

YHaX的博客 400

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

uva 10817 - Headmaster's Headache(01背包)

题目链接:10817 - Headmaster's Headache 题目大意:某个学校要师资力量不够,要招收新的老师,第一行给出s、m、n,现在在任的老师有m个,然后给出m行表示每个老师的信息,分别是该老师的工资,以及可教授的课程(个数不一定),然后在n行表示可招收的老师信息,同样是工资和课程,s表示该学校开售的课程,问,最少花多少钱可以使得该学校开设的s个课程每个课程有两个老师任教。

不慌不忙、不急不躁 1985

Uva10817 Headmaster's Headache

https://odzkskevi.qnssl.com/b506a3c20adad78678917d1ff4c9b953?v=1508327485 【题解】 dp[i][S1][S2]表示前i个教师选/不选已经决策完,当前有一个老师教的课程为S1,两个老师教的课程为S2,还需要的最小价值 答案为dp[0][0][0] 转移即可 1 #include <io...

weixin_30343157的博客 142

uva 10817 - Headmaster's Headache

题目链接 题意:某个学校要师资力量不够,要招收新的老师,第一行给出s~8,课程门数、m~20,必选老师、n~100可选老。,现在在任的老师有m个,然后给出m行表示每个老师的信息,分别是该老师的工资,以及可教授的课程(个数不一定),然后在n行表示可招收的老师信息,同样是工资和课程。问,最少花多少钱可以使得该学校开设的s个课程每个课程有两个老师任教。 题解:每门课有两个老师教,只有8门,状压,但是

ruclion的专栏 478

UVa 10817 Headmaster's Headache

#include #include #include #include #include #include #include #include using namespace std; #define inf (1<<30) // 申请人结构体 typedef struct node { int cost; // 薪水 vector sub; // 可以教的课程编号 }n

c21c21的专栏 316

Headmaster's Headache UVA - 10817

按照紫书的思路,同时利用位运算来提供所谓的集合信息,要注意前m个教师是必须选的,后n个教师是可选的,具体实现见如下代码: #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namesp

zju2016的博客 254

uva10817 - Headmaster's Headache(01背包)

题目:uva10817 - Headmaster's Headache(01背包) 题目大意:这间学校开设S门棵,给出校长已经有的师资(n),然后再给吃m个应聘者,给出的师资和应聘者都会给出雇佣他们需要的钱还有他们会教的科目。要使得每门课都至少要有两个老师教,然后从应聘者中挑选人,要求雇佣费用最少,注意之前的请的老师也是要算进去的。 解题思路:01背包,每个应聘者要不雇用,要不

1063

UVA 10817 Headmaster's Headache 状压DP

记录两个状态S1,S2分别记录哪些课程被1个人教过或2个人教过,然后记忆化搜索 UVA - 10817 Headmaster's Headache Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status

码代码的猿猿 1018

【Uva 10817】Headmaster's Headache

【Link】: 【Description】 一个学校,有s门课程(1<=s <=8),里面本身已经有m个老师了,然后还想招聘n个老师; 给出这m个老师和n个来应聘的老师的信息; (c[i]->工资,以及他们能教哪几门课程); 原本的m个老师一定要继续保留下来; 问你在这个条件下,如何选取这n个老师中的一些人; 使得每门课都至少有两个人...

AWCXV 79

UVA10817 Headmaster's Headache (状压DP)

题目网址:https://vjudge.net/problem/UVA-10817 题意: S门课程,M个教师,N个待聘教师。每个教师都有工资数和能够教授课程种类,要求在M个教师全部选择的基础上,再选择性的雇佣一部分待聘教师,在保证S门课程都至少有2人教授的前提下,付出的工资最少。s&lt;8 思路:  我们通过课程信息来确定最终结果,用三个状态s0,s1,s2的二进制位来代表课程当前的状...

DS00HY的小博客 355

UVA10817 Headmaster's Headache

链接:UVA10817

eeeaaaaa的专栏 470

UVa10817 Headmaster's Headache

还是集合状态压缩dp,有了前面的经验,已经相对好写了。dp(i)

A Cube Master 755
上一篇: Codeforces-710E Generate a String
下一篇: UVAlive-4643 Twenty Questions
_Wilbert
博客等级 码龄12年 48粉丝 122原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值