UVA - 769 Magic of David Copperfield

题意:著名的魔术师大卫科波菲尔喜欢表演下面的魔术:一个N行N列不同图片的矩阵出现在大屏幕上,我们给所有的图片这样命名:

每一个参与的观众被要求将手指放在左上方的图片上(即编号为1的图片),魔术师开始了:魔术师告诉观众在图片上移动k次(移动是把手指放到上下左右相邻的图片上,如果那儿有图片的话),然后他(魔术师)的手微微一指(指向一些图片)并说:“你不在这里”,然后……是真的!你的手指没有指向任何一个被删除的图片(指向的图片)然后再来一次,他告诉观众再移动K2次……以此类推。在最后,他删除到只剩最后一个图片了,然后胜利地微笑着宣布“我抓到你了!”(掌声)。

现在,大卫准备再表演一次这个魔术。不幸的是,他这几天头疼,你知道头疼的时候变戏法有多难!所以你必须写一个程序来帮组大卫变魔术。

【输入】输入文件包含一个整数N (1<N<101).

【输出】你的程序需要像下面这样输出数字:

K1 X1,1 X1,2 ... X1,m1

K2 X2,1 X2,2 ... X2,m2

...

Ke Xe,1 Xe,2 ... Xe,me

Ki是观众第i次移动的步数(N<=Ki<=300),所有Ki都要互补不相同(即当i<>j时,满足Ki<>Kj)Xi,1 Xi,2 ... Xi,mi 是在观众进行了Ki次移动之后大卫需要删除的图片(图片数字的顺序是任意的,但是每个图片只能列出一次,并且每回至少删除一张图片)。

每一回的描述都要在一个新行里。每一行的数字都要使用一个或多个空格分隔开。循环了e次之后,只剩下一个图片没有被删除。

思路:构造,洋葱式的一层层删除

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

int n;

void cal() {
	int cnt = 2*n+1;
	int cur;
	for (int i = 1; i <= n; i++) {
		printf("%d", cnt);
		cnt += 2;
		cur = i;
		for (int j = 1; j <= i; j++) {
			printf(" %d", cur);
			cur += n-1;
		}
		printf("\n");
	}
	int d = n*(n-1)+1;
	for (int i = n-1; i > 1; i--) {
		printf("%d", cnt);
		cnt += 2;
		cur = d+(n-i);
		for (int j = 1; j <= i; j++) {
			printf(" %d", cur);
			cur -= n-1;
		}
		printf("\n");
	}
}

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		scanf("%d", &n);
		cal();
		if (t)
			printf("\n");
	}
	return 0;
}

UVA - 769 Magic of David Copperfield

时间: 2024-11-06 07:19:53

UVA - 769 Magic of David Copperfield的相关文章

Magic of David Copperfield II(奇偶性)

题目大意:这是一个魔术游戏,首先把你的手指放在一个左上角的格子里面,然后魔术师说你可以移动K1步,移动完之后,他会删除一些方格,并且说,你肯定不在这里,删除的方格不可以再去了,然后让你再走K2步,继续删除一些格子,直到就剩下一个格子为止,魔术师就可以说抓住你了,输出每个Ki和删除的格子. 分析:比较明显的利用了奇偶性质,所以每次走奇数步的话就可以了,删除的格子可以从左下角开始,把相同奇偶性质的都给删除即可,注意数N<=K<300,当N等于100的时候,K只能从100开始............

UVA - 471 Magic Numbers

Description  Magic Numbers  Write a program that finds and displays all pairs ofintegers and such that: neither nor have any digits repeated; and , where N is a given integer; Input and Output The input file consist a integer at the beginning indicat

UVA 10457 - Magic Car(最小瓶颈路)

UVA 10457 - Magic Car 题目链接 题意:m条路,每条路上必须维持速度v,现在有一辆车,启动能量和结束能量为a, b,途中消耗能量为经过路径最大速度减去最小速度,现在每次循环给定起点终点,问最小能量花费 思路:最小瓶颈路,利用kruskal去搞 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 205; con

UVA 10457 - Magic Car【最小瓶颈树】

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=600&problem=1398&mosmsg=Submission+received+with+ID+14106648 题意: m条路,每条路上必须维持速度v,现在有一辆车,启动能量和结束能量为a, b,途中消耗能量为经过路径最大速度减去最小速度,现在每次循环给

uva 10457 Magic Car

题意:n个点,m条路,每次启动和停止汽车分别需要x,y能量,给出每条路和路上的速度,额外消耗的能量是所有走过路的最大差,每次给出起点和终点,输出最小能量 分析:启动和终止的能量必须消耗,然后就是求起点和终点之间的最小速度差了,紫书11章有道题是求最小瓶颈树,和这个条件是差不多的,不同是生成一棵树,受这道题的启发,把所有边按照速度排序 然后枚举起点边,用并查集判断x,y两点是否联通 #include<algorithm> #include<cstdio> #include<cs

sgu100~199题解

老东西了..发上来吧.. Sgu题解系列  南开中学邹事成 100:A+B略 101:Domino 给n块多米诺骨牌,每张骨牌两端各有从1到6的一个数字,现在要把这些骨牌排成一列,使相邻的两块骨牌相对的面所写的数字一样. 可以把每一块多米诺骨牌想象成一条边,把面上写的数字抽象成点,比如一块骨牌正面写的1反面写的2就想象成连了一条从1到2的边,那么这就是求一条有重边的欧拉回路了,dfs一下即可. 102:Coprimes给定n求从1到n中与n互质的数的个数. 可以把n质因数分解后直接代入欧拉函数.

整理小朋友在noi.openjudge上的作业(4)

第四章(含小学奥数)计97题,已完成8题 4.1 算法之排序和算法性能   题目ID 标题 分数 尝试人数   1625 Sequence Median 10 90   1754 字符串数组排序问题 10 49   1999 日志排序 10 50   4363 瑞士轮 10 101 4.2 算法之数论   题目ID 标题 分数 尝试人数   1350 Euclid's Game 10 223   1486 A Funny Game 10 70   185 反正切函数的应用 10 44   241

&lt;老友记&gt;学习笔记

这是六个人的故事,从不服输而又有强烈控制欲的monica,未经世事的千金大小姐rachel,正直又专情的ross,幽默风趣的chandle,古怪迷人的phoebe,花心天真的joey——六个好友之间的情路坎坷,事业成败和生活中的喜怒哀乐,无时无刻不牵动着彼此的心,而正是正平凡的点点滴滴,却成为最令人感动与留恋的东西. 人物:1.瑞秋•格林(RACHEL GREENE)由珍妮佛•安妮斯顿(Jennifer Aniston)扮演 瑞秋是莫妮卡的高中同学,在与牙医未婚夫的婚礼上脱逃至莫妮卡处. 2.罗

牛津高中英语模块8Reading课文

Unit 1 Appreciating literature What is classic literature? Classics are the antiques of the literary world. They are novels, plays and poems that were written a long time ago and were so well written and well received that people still read them toda