题解 洛谷P1088 [NOIP2004 普及组] 火星人——【C/C++】

这篇具有很好参考价值的文章主要介绍了题解 洛谷P1088 [NOIP2004 普及组] 火星人——【C/C++】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[NOIP2004 普及组] 火星人

题目描述

人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。

火星人用一种非常简单的方式来表示数字――掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为 1 , 2 , 3 , ⋯ 1,2,3,\cdots 1,2,3,。火星人的任意两根手指都能随意交换位置,他们就是通过这方法计数的。

一个火星人用一个人类的手演示了如何用手指计数。如果把五根手指――拇指、食指、中指、无名指和小指分别编号为 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4 5 5 5,当它们按正常顺序排列时,形成了 5 5 5 位数 12345 12345 12345,当你交换无名指和小指的位置时,会形成 5 5 5 位数 12354 12354 12354,当你把五个手指的顺序完全颠倒时,会形成 54321 54321 54321,在所有能够形成的 120 120 120 5 5 5 位数中, 12345 12345 12345 最小,它表示 1 1 1 12354 12354 12354 第二小,它表示 2 2 2 54321 54321 54321 最大,它表示 120 120 120。下表展示了只有 3 3 3 根手指时能够形成的 6 6 6 3 3 3 位数和它们代表的数字:

三进制数 代表的数字
123 123 123 1 1 1
132 132 132 2 2 2
213 213 213 3 3 3
231 231 231 4 4 4
312 312 312 5 5 5
321 321 321 6 6 6

现在你有幸成为了第一个和火星人交流的地球人。一个火星人会让你看他的手指,科学家会告诉你要加上去的很小的数。你的任务是,把火星人用手指表示的数与科学家告诉你的数相加,并根据相加的结果改变火星人手指的排列顺序。输入数据保证这个结果不会超出火星人手指能表示的范围。

输入格式

共三行。
第一行一个正整数 N N N,表示火星人手指的数目( 1 ≤ N ≤ 10000 1 \le N \le 10000 1N10000)。
第二行是一个正整数 M M M,表示要加上去的小整数( 1 ≤ M ≤ 100 1 \le M \le 100 1M100)。
下一行是 1 1 1 N N N N N N 个整数的一个排列,用空格隔开,表示火星人手指的排列顺序。

输出格式

N N N 个整数,表示改变后的火星人手指的排列顺序。每两个相邻的数中间用一个空格分开,不能有多余的空格。

样例 #1

样例输入 #1

5
3
1 2 3 4 5

样例输出 #1

1 2 4 5 3

提示

对于 30 % 30\% 30% 的数据, N ≤ 15 N \le 15 N15

对于 60 % 60\% 60% 的数据, N ≤ 50 N \le 50 N50

对于 100 % 100\% 100% 的数据, N ≤ 10000 N \le 10000 N10000

noip2004 普及组第 4 题
代码:文章来源地址https://www.toymoban.com/news/detail-822879.html

#include <bits/stdc++.h> 
using namespace std;

int N,M;
int mars[10010];//输入的火星人数据 
int arr[10010];//记录的方案 
bool st[10010] ;
int res=0;//方案个数 
bool return0=false;
void dfs(int x) {
	if(return0){//剪枝 
		return ;
	}
	if(x>N){
		res++;
		if(res==M+1){
			return0=true;
			for(int i=1;i<=N;i++){
				printf("%d ",arr[i]);
			}
		}
		return ;
	}
	for(int i=1;i<=N;i++){
		if(!res){
			i=mars[x];
		}
		if(!st[i]){
			st[i]=true;
			arr[x]=i;
			dfs(x+1);
			st[i]=false;
			arr[x]=0;
		}
	}
}
int main(){
	cin>>N>>M;
	for(int i=1;i<=N;i++){
		cin>>mars[i];
	}
    dfs(1);
	return 0;
}

到了这里,关于题解 洛谷P1088 [NOIP2004 普及组] 火星人——【C/C++】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 洛谷P1059 [NOIP2006 普及组] 明明的随机数

    1. 问题描述 2. Input 输入有两行,第 1 行为 1 个正整数,表示所生成的随机数的个数 N。第 2 行有 N 个用空格隔开的正整数,为所产生的随机数。 3. Output 输出也是两行,第 1 行为 1 个正整数 M,表示不相同的随机数的个数。第 2 行为 M 个用空格隔开的正整数,为从小到大排好序

    2024年02月15日
    浏览(32)
  • 洛谷——P1069 [NOIP2009 普及组] 细胞分裂(分解质因数,唯一分解定理)

    Hanks 博士是 BT(Bio-Tech,生物技术)领域的知名专家。现在,他正在为一个细胞实验做准备工作:培养细胞样本。 Hanks 博士手里现在有 N N N 种细胞,编号从 1 ∼ N 1 sim N 1 ∼ N ,一个第 i i i 种细胞经过 1 1 1 秒钟可以分裂为 S i S_i S i ​ 个同种细胞( S i S_i S i ​ 为正整数)。

    2024年01月16日
    浏览(35)
  • P1077 [NOIP2012 普及组] 摆花 题解

    小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共 m m m 盆。通过调查顾客的喜好,小明列出了顾客最喜欢的 n n n 种花,从 1 1 1 到 n n n 标号。为了在门口展出更多种花,规定第 i i i 种花不能超过 a i a_i a i ​ 盆,摆花时同一种花放在一起,且不同种类的花

    2024年02月08日
    浏览(33)
  • 【洛谷 P1097】[NOIP2007 提高组] 统计数字 题解(映射)

    注意 :数据可能存在加强。 某次科研调查时得到了 n n n 个自然数,每个数均不超过 1.5 × 1 0 9 1.5 times 10^9 1.5 × 1 0 9 。已知不相同的数不超过 1 0 4 10^4 1 0 4 个,现在需要统计这些自然数各自出现的次数,并按照自然数从小到大的顺序输出统计结果。 共 n + 1 n+1 n + 1 行。 第一

    2024年02月09日
    浏览(37)
  • 【洛谷 P1003】[NOIP2011 提高组] 铺地毯 题解(数组+贪心算法)

    为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n n n 张地毯,编号从 1 1 1 到 n n n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上

    2023年04月24日
    浏览(34)
  • 【洛谷 P1328】[NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解(模拟+向量)

    石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第 8 集中出现了一种石头剪刀布的升级版游戏。 升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势: 斯波克:《星际迷航》主角之一。 蜥

    2024年02月09日
    浏览(29)
  • 【洛谷 P1024】[NOIP2001 提高组] 一元三次方程求解 题解(数学+二分答案)

    有形如: a x 3 + b x 2 + c x + d = 0 a x^3 + b x^2 + c x + d = 0 a x 3 + b x 2 + c x + d = 0 这样的一个一元三次方程。给出该方程中各项的系数( a , b , c , d a,b,c,d a , b , c , d 均为实数),并约定该方程存在三个不同实根(根的范围在 − 100 -100 − 100 至 100 100 100 之间),且根与根之差的绝对值

    2024年02月06日
    浏览(24)
  • [NOIP2007 普及组] 纪念品分组

    元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间

    2024年02月14日
    浏览(34)
  • 一本通1919:【02NOIP普及组】选数

    这道题感觉很好玩。 先放题目: 信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn) http://ybt.ssoier.cn:8088/problem_show.php?pid=1919 已知 n 个整数 x1,x2,…,xn,以及一个整数 k(k<n)。从 n 个整数中任选 k 个整数相加,可分别得到一系列的和。例如当 n=4,k=3,4 个整数分别为 3,7,

    2024年02月16日
    浏览(25)
  • NOIP2003普及组复赛T2:数字游戏

    题目链接:NOIP2003普及组复赛T2 - 数字游戏 丁丁最近沉迷于一个数字游戏之中。这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易。游戏是这样的,在你面前有一圈整数(一共 n n n 个),你要按顺序将其分为 m m m 个部分

    2024年02月09日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包