UVa 10817 Headmaster's Headache

【王道训练营 C/C++方向基础 60 题(31-40)】 王道训练营 C/C++方向基础 60 题(31-40) 阅读详情
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <sstream>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std;
#define inf (1<<30)

// 申请人结构体
typedef struct node
{
	int cost;	// 薪水
	vector<int> sub;	// 可以教的课程编号		
}node;

// 申请人列表
node array[110];

int sub_num, now_num, app_num;

// 现在课程情况, subject[i]代表第i门课上课老师人数
int subject[10];

// record[i][S]代表在前i个申请人,在课程情况为S(第i位为j代表第i门课还需要j个老师)中选择老师满足条件的最少花费
int record[110][20000];

// 代表选择现在老师的花费
int now_cost;

int get_min(int x, int s);

int main()
{
	string str;
	while(getline(cin, str))
	{
		memset(record, -1, sizeof(record));
		memset(subject, 0, sizeof(subject));
		now_cost = 0;

		stringstream scin(str);
		scin >> sub_num >> now_num >> app_num;

		if(sub_num == 0)
			break;
		// 读入现在的老师情况
		for(int i = 1; i <= now_num; i++)
		{
			getline(cin, str);
			stringstream scin(str);
			int c;
			scin >> c;
			now_cost += c;
			while(scin >> c)
			{
				if(subject[c] < 2)
					subject[c]++;
			}	 		
		}

		// 读入申请者情况
		for(int i = 1; i <= app_num; i++)
		{
			getline(cin, str);
                        stringstream scin(str);
                        int c;
                        scin >> c;
                        array[i].cost = c;
			array[i].sub = vector<int>();
                        while(scin >> c)
				array[i].sub.push_back(c);	
		}

		// 计算现在课程情况的三进制表示
		int now_s = 0;
		for(int i = 1; i <= sub_num; i++)
			now_s = now_s*3 + (2-subject[i]);

//		printf("now_s: %d, now_cost: %d\n", now_s, now_cost);
		// 计算结果
		printf("%d\n", now_cost + get_min(app_num, now_s));	
	}		
	return 0;	
}

// 计算结果
// 在s课程情况,前x个申请人中选择老师的最少花费
int get_min(int x, int s)
{
//	printf("x: %d, s: %d \n", x, s);
	if(record[x][s] != -1)
		return record[x][s];
	// 如果没有需要上的课,返回0
	if(s == 0)		
	{
		record[x][s] = 0;
		return record[x][s];
	}

	// 如果没有可选申请人,返回无穷大
	if(x == 0)
	{
		record[x][s] = inf;
		return record[x][s];
	}

	// 分情况:选择该申请人,和不选该申请人。挑选其中较小的一方
	// 1.不选该申请人
	int r1 = get_min(x-1, s);
	
	// 2.选择该申请人
	// 计算新的课程情况
	
	int now_s[10];
	memset(now_s, 0, sizeof(now_s));
	int cumu_sum[10];
	memset(cumu_sum, 0, sizeof(cumu_sum));
	for(int i = 1; i <= sub_num; i++)
	{
		int num = s - cumu_sum[i-1];
		for(int j = 1; j <= sub_num-i; j++)
			num = num / 3;
		now_s[i] = num;
		cumu_sum[i] = cumu_sum[i-1] + num*pow(3,sub_num-i);					
	}	
/*
	int this_s[10];
	memset(this_s, 0, sizeof(this_s));
*/
	for(int i = 0; i < array[x].sub.size(); i++)
	{
		int k = array[x].sub[i];
		if(now_s[k] > 0)
			now_s[k]--;		
	}			

	int new_s = 0;
	for(int i = 1; i <= sub_num; i++)
		new_s = new_s*3 + now_s[i];

	int r2 = array[x].cost + get_min(x-1, new_s);

	record[x][s] = min(r1, r2);
//	printf("record[%d][%d]: %d\n", x, s, record[x][s]);
	return record[x][s];						
}


这题相对容易,用d(i, s)来代表在前i个申请人,在课程情况为s(第i位为j代表第i门课还需要j个教师上)下的最小花费

计算d(i, s)分两种情况:1.选第i个申请者,设第i个申请者薪水为cost(i). 需要根据第i个申请者能上的课更新s至s'. 2.不选第i个申请者

d(i, s) = min(d(i-1, s) , cost(i) + d(i-1, s'))


由于每个课只有三种情况:0,1,2. 所以仿照二进制表示的思路,可以三进制来表示s.


注意:当发现当前的状态表示很难时,就尝试增加状态的维度。对于复杂的集合状态,尝试用整数(某进制)来表示每一个元素情况。

JavaScript - Blob / File / base64 使用场景介绍与相互转换 前言 本文首先介绍一下这三种对象使用场景,最后介绍下它们之间互转格式的解决方案。 您前端一旦涉及到文件或图片上传到服务器, 就势必离不了Blob/File/base64三种主流的类型。 Blob MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Blob 您可以观察到,像一些图片处理插件(例如有名的vue-cropper)图片裁剪插件, 它们将图片处理完毕后,都将使用blob对象返回处理好的图片,供开发者用于上传服务器。 阅读详情

相关推荐

ROS学习【11】-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真(camera、kinect、Lidar),并通过Rviz进行数据显示

ROS学习-----基于ubuntu16.04上Gazebo机器人环境搭建的传感器仿真目录一、Gazebo环境搭建前的准备1、将搭建模型下载到我们的gazebo环境下2、升级我们的gazebo版本二、创建配置launch文件参数的world文件1、进入工程包mbot_gazebo2、创建文件夹worlds3、进入该文件夹4、创建playground.world文件5、创建room.world文件三...

qq_42451251的博客 3610

状态压缩DP UVa10817-Headmaster's Headache

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

wuzy38的博客 3304

成分数据的闭合效应对地球化学数据的影响及其解决方案

封闭效应 (Closure Effect),也称为常数和效应 (Constant Sum Effect),是地球化学数据分析中一个需要特别注意的统计现象。它的产生是由于我们通常使用成分数据 (Compositional Data)百分比 (%)百万分率 (ppm)由于这些数据表示的是各组分占总体的比例,它们的总和必然是一个常数 (例如 100% 或 1,000,000 ppm)。这意味着每个元素的含量不是独立的,而是与其他元素的含量相互制约。改变其中一个元素的含量必然会影响其他元素的相对比例。

qq_59349063的博客 1538

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

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

D_Double's Journey 3745

Android手机免root玩转Kali NetHunter:Termux保姆级安装指南(附Kex VNC配置)

本文提供了一份详细的Android手机免root安装Kali NetHunter的保姆级指南。通过使用Termux终端模拟器,用户无需解锁Bootloader或获取root权限,即可在普通安卓设备上部署完整的Kali Linux渗透测试环境。教程涵盖了从环境准备、NetHunter核心安装到配置Kex VNC实现图形桌面访问的全过程,并附带了电脑投屏与常见问题解决方案,旨在打造一个便携的移动安全学习与测试平台。

weixin_29208327的博客 300

保姆级教程:在Windows上用VS2019和OpenCV4.6搞定海康MV-EB435i RGBD相机图像采集

本文提供了一份详细的教程,指导如何在Windows环境下使用VS2019和OpenCV4.6配置海康MV-EB435i RGBD相机进行图像采集。从开发环境准备、SDK部署到代码移植和优化,涵盖了深度图与RGB图同步采集的实战技巧,帮助开发者快速上手工业级RGBD相机的应用开发。

weixin_28675557的博客 468

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

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

闲停 1575

01-FreeSWITCH 的安装、部署、配置以及可能遇到的问题和解决方法

一文让您了解从FreeSWITCH 的安装、部署、配置、可能遇到的问题及解决方法。一切从实际项目出发,以工程应用为目的。

秋风的博客 2127

UVA 10817 Headmaster's Headache

状态压缩DP 题意: 某校有n个教师和m个求职者,已知每人的工资和能教的课程集合,要求支付最少的工资使得每门课都至少有两名教师教学。在职教师必须招聘。 解法: 传送门 第一次遇到状态压缩DP开二维,之前本人的思路一直卡在如何在一个16进制位中表示选了1次和选了2次这种状态,即如何从选1个的位进位到选两个的位。原来开二维就可以轻松解决。。 目前的整体感觉是,DP是去寻找一个状态,能够记录下求

= = 1017

保姆级教程:用YOLOv5s训练PCB缺陷检测模型(附北大公开数据集)

本文提供了一份基于YOLOv5s的PCB缺陷检测模型从零开始的完整实战教程。详细解析了如何使用北大公开数据集,涵盖环境搭建、数据处理、模型训练、性能评估及优化部署全流程,并针对工业场景中常见的类别不均衡问题给出了具体解决方案,旨在帮助开发者快速构建高精度的自动化质检系统。

weixin_28285943的博客 308

【38】OpenCV C++实战篇——基于多项式插值的亚像素边缘定位算法

亚像素边缘定位算法实现 本文介绍了一种基于多项式插值的亚像素边缘定位算法,用于提高图像边缘检测的精度。文章首先分析了传统像素级边缘检测方法(如Canny、Sobel)的局限性,指出其在测量应用中的精度不足问题。 算法核心 梯度计算:使用8个方向模板进行卷积运算生成梯度图像 亚像素定位:采用多项式插值方法改进边缘定位精度 实现步骤: 生成8个方向的卷积模板(0°、45°、90°等) 利用filter2D函数计算各方向梯度 通过归一化处理显示梯度图像 代码特点 提供完整的C++实现代码 包含模板生成、梯度计算和

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 1099

uva10817 Headmaster's Headache

状压dp

YHaX的博客 400

UVA-10817 Headmaster's Headache

题目大意: 有s个学科,现在在学校有n个教师在教书,这些教师必须要被雇佣,现在还有m个教师正在应聘。现在给出这n个在职教师的工资和能教的科目,给出m个应聘教师的工资和能教的科目,现在希望这s个科目,每个都有至少两个教师教授,问你最少需要支付的工资是多少。 解题思路: 动态规划。状压DP。 dp[i]表示i这个状态需要支付的最少工资。因为每个科目至少两个教师,且最多只有8个科目,所以很明显状

Wilbert的博客 662

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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

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

不慌不忙、不急不躁 1985

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

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

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

uva 10817 - Headmaster's Headache

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

ruclion的专栏 478

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

UVA - 10817 Headmaster's Headache

花了四个多小时做这道题,碰到这样不算难但自己解决不好的题才意识到自己各个方面的不足。 开始,我自己能够想到要用状态压缩的背包来解决。课有些问题一直没搞清楚,因为每个老师能教的课程不一定非得他交,我就认为状态转移时还要考虑各门课教还是不交,然后初始化也是一样。这样就比较麻烦,最后我还是写出来了,但复杂度太高,TLE,然后才发现不一定非要考虑教还是不交,因为遍历的时候每种状态都会考虑,这样,只要初始

cgjiayou 448

UVa10817 Headmaster's headache[状压DP]

最后再跟自己强调一次,Think twice,code once. Headmaster’s Headache The headmaster of Spring Field School is consider- ing employing some new teachers for certain subjects. There are a number of teach- ers

NULL 665

UVa10817 Headmaster's Headache

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

A Cube Master 755
上一篇: UVa 1218 Perfect Service
下一篇: UVa 1252 Twenty Questions
c21c21
博客等级 码龄12年 0粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值