codechef Cleaning Up 解决问题的方法

After a long and successful day of preparing food for the banquet, it is time to clean up. There is a list of n jobs to do before the kitchen can be closed for the night. These jobs are indexed from 1 to n.

Most of the cooks have already left and only the Chef and his assistant are left to clean up. Thankfully, some of the cooks took care of some of the jobs before they left so only a subset of the n jobs remain. The Chef and his assistant divide up the remaining
jobs in the following manner. The Chef takes the unfinished job with least index, the assistant takes the unfinished job with the second least index, the Chef takes the unfinished job with the third least index, etc. That is, if the unfinished jobs were listed
in increasing order of their index then the Chef would take every other one starting with the first job in the list and the assistant would take every other one starting with the second job on in the list.

The cooks logged which jobs they finished before they left. Unfortunately, these jobs were not recorded in any particular order. Given an unsorted list

of finished jobs, you are to determine which jobs the Chef must complete and which jobs his assitant must complete before closing the kitchen for the

evening.

Example

Input:
3
6 3
2 4 1
3 2
3 2
8 2
3 8

Output:
3 6
5
1

1 4 6
2 5 7

简单的分类题目了。

使用一个bool型,轮流模拟选jobs就能够了。

#pragma once
#include <vector>
#include <string>
#include <algorithm>
#include <stack>
#include <stdio.h>
#include <iostream>
using namespace std;

int CleaningUp()
{
	int T, n, m, j = 0;
	cin>>T;

	while (T--)
	{
		cin>>n>>m;
		bool finJobs[1001] = {0};
		vector<int> chefJobs, assiJobs;
		for (int i = 0; i < m; i++)
		{
			scanf("%d", &j);
			finJobs[j] = true;
		}
		bool turn = true;
		for (int i = 1; i <= n; i++)
		{
			if (!finJobs[i])
			{
				if (turn) chefJobs.push_back(i);
				else assiJobs.push_back(i);
				turn = !turn;
			}
		}
		for (int i = 0; i < (int)chefJobs.size(); i++)
		{
			printf("%d ", chefJobs[i]);
		}
		putchar(‘\n‘);
		for (int i = 0; i < (int)assiJobs.size(); i++)
		{
			printf("%d ", assiJobs[i]);
		}
		putc(‘\n‘, stdout);
	}
	return 0;
}

版权声明:笔者靖心脏,景空间地址:http://blog.csdn.net/kenden23/,只有经过作者同意转载。

时间: 10-22

codechef Cleaning Up 解决问题的方法的相关文章

codechef Cleaning Up 题解

After a long and successful day of preparing food for the banquet, it is time to clean up. There is a list of n jobs to do before the kitchen can be closed for the night. These jobs are indexed from 1 to n. Most of the cooks have already left and onl

《成为技术领导者-掌握全面解决问题的方法》读后感

<成为技术领导者-掌握全面解决问题的方法>的作者是美国作家Gerald M.Weinberg,译者余晟. 我花了大约一周的时间将本书阅读完成的,购买本书的也是一个很巧合的,因为看到书名包含了技术(联想到了编程技术,因为作者从事过软件开发),且浏览了目录像是有技巧性的知识包含其中,于是就购买了,结果阅读的过程当中,我才发现本书跟编程技术.技巧没有多少关系,而副标题才是准确表达本书的核心,全书分为定义.创新.激励.组织.转变五个部分,详细入微的讨论了一个技术领导要解决问题的各种方法,让你看到,技术

1月31日 解决问题的方法( 麦肯锡七步成诗法 )

第一步:问题描述  1 明确企业要解决的基本问题  2 具体的.有内容的描述问题  3 清楚列示问题涉及的各方面信息 第二步:问题的分解 1 为何要进行分解  a 分解是提出假设的基础          提出假设          搜集资料          分析论证假设          完成咨询报告  b 理清思路         分解区分         设置优先顺序 2 问题分解的原则  a 内容是不是全面充分?  b 分解后的要素是不是相互独立? 3 问题分解的方法  a 不断提出假设

Hostspace组织培训活动——解决问题,方法先行

在日常工作中,大部分工作内容都是在"解决问题",解决问题是一个不断摆事实,找原因,提方案的过程.简单的问题依靠直线思维和经验判断就可解决,但碰上复杂问题时,常常由于主观认知先入为主或思考问题时缺少合理假设等原因导致头脑发热,被一些问题表面现象所迷惑,抓不住主要原因和问题本质.导致复杂问题简单化,想要考虑全面,却往往适得其反.总结起来,是我们在工作中缺少一套科学的分析与解决问题体系.完整的解决问题框架. 为了对公司成员解决问题的能力进行系统化的训练和提升,更好地履行各自的岗位职责,提高产

解决问题的方法

写一个帖子,出现问题,然后通过日志找到问题,最后解决问题的路径 问题:把mysql目录下的二进制日志删除了,发现mysql死活提不起来 解决: 第一步查看日志 tail -100 /var/lib/mysql/localhost.localdomain.err 发现没有一个文件,因为mysql每次都是读取bin.index文件的序列号,那么我把bin.index删除,然后启动mysql,看他是否创建最新的bin.index和binlog日志文件

解决问题的方法--站在巨人肩膀上思考1

项目中使用js进行数据前台的显示,遇到一个问题和解决方法,对解决方法进行思考.      后台传数据给js,js负责把得到的数据放到img标签的title中,这时问题出现了,后台的数据又特殊字符&XXXX;("·"),这样在title中显示的时候就成为了的字符了. 1.于是就开始搜索怎么使用js把&XXXX;转换为"·",找了很多文章写的都不是很好,写了自己一套的js转义函数进行转义,这个问题没有这么复杂. 2.开始思考jquery有什么好的方法,没

偶尔,当拍摄从相册或图片相机拍摄照片黑色解决问题的方法,解决问题和头部转动的方法

我尝试了很多方法,在线.无解! 其目的是相同的,它是基于图像的方向orientation 对于旋转相应的角度,达到我们想要的效果.! 的条形码直接观看,我曾是imagePickerController要获取的图片 #pragma mark - UIImagePickerControllerDelegate methods //当选择一张图片后进入这里 -(void)imagePickerController:(UIImagePickerController *)picker didFinishP

DB2 sql报错后查证原因与解决问题的方法

1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703  检测到一个未定义的列.属性或参数名.  SQL0206N  "SQL_COU_ALL" is not valid in the context where it is used.  SQLSTATE=42703      db2 => ? "42703"          db2 =

Python学习之--数字转人民币读法(解决问题的方法很重要)

效果图: 实现代码: money = float(input("Please input the money:"))cop = int(money)Num = ['零','壹','贰','叁','肆','伍','陆','柒','捌','镹']#用于存转换后的汉字UnitZ = ['','仟','佰','十']#存转换需要的单位(4数字一循环)Integer = []#存整数部分每一位数字Decimal = []#存小数部分每一位数字(一共两位,精确到分)Zheng = copXiao