Uva 120 Stacks of Flapjacks 解题报告

Java实战:用Proj4j搞定WGS84与CGCS2000坐标互转(附完整代码) 本文详细介绍了如何使用Java库Proj4j实现WGS84与CGCS2000坐标系之间的高精度转换。通过七参数转换模型和格网改正量文件,提供完整的代码实现和项目配置指南,帮助开发者快速集成到地理信息系统项目中,提升坐标转换效率和精度。 阅读详情

Stacks of Flapjacks(煎饼)

Background

Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event simulation. Stacks are also important in the theory of formal languages.

栈和队列经常被认为是数据结构中的面包和黄油,并且广泛应用在体系结构、分析、操作系统和离散化等领域。栈同时也在形式语言理论中发挥着重要的作用。

This problem involves both butter and sustenance in the form of pancakes rather than bread in addition to a finicky server who flips pancakes according to a unique, but complete set of rules.

这个问题是一个挑剔的厨师用一种独特的方式翻动煎饼,使得煎饼(而不是面包)中的黄油和营养不被破坏。(对于我这种英语缺

陷的人来说,翻译这种令人无语的句子真是一种折磨啊...)

The Problem

Given a stack of pancakes, you are to write a program that indicates how the stack can be sorted so that the largest pancake is on the bottom and the smallest pancake is on the top. The size of a pancake is given by the pancake's diameter. All pancakes in a stack have different diameters.

给出一叠煎饼,你需要把它们从小到大进行排序,使得最大的在底部,最小的在顶部。给出煎饼的直径作为它的尺寸。每一个煎饼的的直径都是不同的。

Sorting a stack is done by a sequence of pancake ``flips''. A flip consists of inserting a spatula between two pancakes in a stack and flipping (reversing) the pancakes on the spatula (reversing the sub-stack). A flip is specified by giving the position of the pancake on the bottom of the sub-stack to be flipped (relative to the whole stack). The pancake on the bottom of the whole stack has position 1 and the pancake on the top of a stack of n pancakes has position n.

煎饼的排序是通过一种“翻转”实现的。一次翻转(...这一部分好难翻译啊...)是把铲子放在两个煎饼之间,然后把上面的煎饼倒转过来。每个翻转是由开始位置决定的,即铲子上面的最下面的那张煎饼(是铲子放进的两个煎饼中上面的那个)的编号。最下面的那张编号是1,最上面的那张编号是n。

A stack is specified by giving the diameter of each pancake in the stack in the order in which the pancakes appear.

一个叠煎饼由一组表示其中各煎饼直径的数构成,它们排列的顺序就是给出的这些数的顺序。

For example, consider the three stacks of pancakes below (in which pancake 8 is the top-most pancake of the left stack):

比如下面的三叠煎饼(煎饼8是左边一叠的最上面的一个):

         8           7           2
         4           6           5
         6           4           8
         7           8           4
         5           5           6
         2           2           7
The stack on the left can be transformed to the stack in the middle via flip(3). The middle stack can be transformed into the right stack via the command flip(1).

左边一叠可以通过从第3个煎饼开始翻转变成中间一叠的顺序。中间一叠可以通过从第1个煎饼开始翻转变成右边一叠的顺序。

The Input

The input consists of a sequence of stacks of pancakes. Each stack will consist of between 1 and 30 pancakes and each pancake will have an integer diameter between 1 and 100. The input is terminated by end-of-file. Each stack is given as a single line of input with the top pancake on a stack appearing first on a line, the bottom pancake appearing last, and all pancakes separated by a space.

输入包括许多叠煎饼。每叠都由1到30个煎饼组成,并且每个煎饼的直径都在 1到100之间。输入由EOF结束。每叠煎饼独占一行,最上面的在行首,最下面的在行尾,各煎饼中间由空格隔开。

The Output

For each stack of pancakes, the output should echo the original stack on one line, followed by some sequence of flips that results in the stack of pancakes being sorted so that the largest diameter pancake is on the bottom and the smallest on top. For each stack the sequence of flips should be terminated by a 0 (indicating no more flips necessary). Once a stack is sorted, no more flips should be made.

对应于每叠煎饼数据,必须在第一行输出原来这叠煎饼的内容,接下来输出一组翻转动作的序列,使得这一叠煎饼自底向上由大至小的排列。输出的每一组翻转动作序列都要由0来结束(表示不再进行翻转)。一旦一叠煎饼已经排好序,就不能再进行任何翻转。

Sample Input

1 2 3 4 5
5 4 3 2 1
5 1 2 3 4

Sample Output

1 2 3 4 5
0
5 4 3 2 1
1 0
5 1 2 3 4
1 2 0
终于翻译完题了,接下来可以分析一下题意,本题是要让我们通过不断地“翻转”,即将一段序列颠倒,来实现从小到大的排序。
第一眼看上去好像有些没有思路,不过仔细想想不难发现,由于翻转是在从一个点向上到顶端这段区间内进行的,所以可以从下往上逐渐把每个煎饼归位(因为上面的对下面的没有影响),这样的话就变成了先把煎饼的大小从大到小排序,然后从大到小把每个煎饼先翻到最上面(这样接下来就只需要一次把它翻到应该处在的位置上了)。
Code:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int a[101],b[101],c[100001];
int z[301]; 
bool cmp(int x,int y)
{
	return x>y;
}
int find(int x,int n)
{
	for (int i=1; i<=n; i++)
		if (a[i]==x)
		{
			return i;
			break;
		}
}
int main()
{
	int n,i=0,j=0,k=1,l=0,x,p=0;
	char ch;
	memset(a,0,sizeof(a));
	memset(b,0,sizeof(b));
	memset(c,0,sizeof(c));
	memset(z,-1,sizeof(z));
	while (scanf("%c",&ch)==1)
	{
		if (ch!='\n') z[++i]=ch-'0';
		else if (ch=='\n')
		{
			n=i;
			int v=0;
			for (i=1; i<=n; i++)
			{
				if (z[i]>0 && z[i+1]<0)
				{
					a[++v]=z[i];
					z[i]=-1;
				}
				else if (z[i]>0 && z[i+1]>=0 && z[i+2]<0)
				{
					a[++v]=z[i]*10+z[i+1];
					z[i]=-1;
					z[i+1]=-1;
				}
				else if (z[i]>0 && z[i+1]>=0 && z[i+2]>=0)
				{
					a[++v]=z[i]*100+z[i+1]*10+z[i+2];
					z[i]=-1;
					z[i+1]=-1;
					z[i+2]=-1;
				}
				else if (z[i]>0 && z[i+1]==0)
				{
					a[++v]=z[i];
					z[i]=-1;
				}
			}
			while (a[n]==0) n--;
			for (i=1; i<=n; i++)
			{
				printf("%d ",a[i]);
				b[i]=a[i];
			}
			printf("\n");
			sort(b+1,b+n+1,cmp);
			for (i=n; i>=1; i--)
			{
				if (a[i]==b[n-i+1]) continue;
				k=find(b[n-i+1],n);
				if (k!=1)
				{
					l++;
					c[l]=n-k+1;
					for (j=1; j<=k/2; j++)
					{
						a[j]^=a[k-j+1];
						a[k-j+1]^=a[j];
						a[j]^=a[k-j+1];
					}
				} 
				if (a[1] != b[n])
				{
					l++;
					c[l]=n-i+1;
					for (j=1; j<=i/2; j++)
					{
						a[j]^=a[i-j+1];
						a[i-j+1]^=a[j];
						a[j]^=a[i-j+1];
					}
				}
			}
			for (i=1; i<=l+1; i++) printf("%d ",c[i]);
			printf("\n");
			i=0;
			l=0;
			memset(a,0,sizeof(a));
			memset(c,0,sizeof(c));
			memset(z,-1,sizeof(z));
		}
	}
	return 0;
}
中间做了许多很笨的转换方法...比如字符转数字用流的话会简单许多...还有就是把交换两个变量写成了异或的形式...貌似有些多余,欢迎轻喷...
066、AR 应用中虚拟物体漂移抖动?IMU 融合 + 光流追踪的视觉里程计优化方案 AR应用中虚拟物体漂移抖动优化方案 摘要:针对AR应用中虚拟物体漂移抖动问题,提出一种IMU融合与光流追踪的视觉里程计优化方案。关键点包括:1) 采用IMU预积分技术处理高频噪声,通过中值积分计算帧间相对运动约束;2) 使用金字塔LK光流追踪像素运动,通过中值偏差法剔除异常值;3) 构建10帧滑动窗口的紧耦合优化框架,将IMU预积分约束和光流重投影约束联合优化。实验表明,该方法有效解决了时间戳未对齐导致的"跳舞箭头"现象,在手机端实现稳定30fps的AR定位精度,漂移误差降低至厘米级。特别提醒:IMU与视觉 阅读详情

相关推荐

数学之美 | 图论和网络爬虫

文章目录概述图论网络爬虫分析BFSDFSBFS + DFS参考资料 概述 这篇文章主要给大家介绍一下计算机算法中非常重要的一部分——图论,以及它在生活中的应用——网络爬虫。   图论 离散数学是当代数学的一个重要的分支,也是计算机科学的数学基础。它又包括四个分支,而图论便是其中一支,另外三个分别是:数理逻辑、集合论、近代数学。 图论中的图由一些节点和边构成,比如下面这张图 。 在图论中一个很基础...

小小酥梨的博客 3231

洛谷-UVA120 煎饼 Stacks of Flapjacks

输入格式 输出格式 题意 给你一迭薄煎饼,请你写一个程式来指出要如何安排才能使这些薄煎饼由上到下依薄煎饼的半径由小到大排好。所有的薄煎饼半径均不相同。 要把薄煎饼排好序需要对这些薄煎饼做翻面(flip)的动作。方法是以一抹刀插入一迭薄煎饼中,然后做翻面的动作(也就是说在抹刀上面的薄煎饼经翻面后,会依相反的次序排列)。若一迭共有n个薄煎饼,我们定义最底下的薄煎饼的位置为1,最上面的薄煎饼位置为...

zqhf123的博客 552

拌合楼软件开发(24)接收微信消息生成车辆计划

【摘要】针对拌合站客户群体文化程度不高、习惯微信群沟通的业务场景,提出通过企业微信机器人实现微信对话下单的解决方案。核心是利用WorkTool工具的消息回调机制:1)配置接收消息的API接口;2)解析JSON格式的对话数据,筛选@机器人的有效消息;3)采用*号分隔符提取订单信息并进行校验;4)建立微信昵称与客户系统的映射关系。方案解决了传统系统登录门槛高的问题,但需注意群名唯一性、多系统对接及客户身份识别等关键问题。全文重点阐述技术实现逻辑而非具体代码。

morsth的博客 1045

题解|Stacks of Flapjacks

Stacks of Flapjacks UVA-120 [问题描述] 堆栈和队列通常被认为是数据结构的面包和黄油,可用于体系结构、解析,操作系统和离散事件模拟。堆栈在形式语言理论中也很重要。 现在的问题涉及黄油和煎饼(而不是面包),同时还有一个根据唯一但完整的规则来翻煎饼的服务器。 给你一栈的煎饼,请你编写一个程序用于指示这个栈如何被排序以使得最大的煎饼在最下面而最小的煎饼在最上面。 煎饼的直径将...

My Blog 527

Unity地形数据高效转换:从Terrain到3DMAX的OBJ导出实战

本文详细解析了Unity地形数据无法直接导入3DMAX的原因,并提供了高效转换的实战方案。通过编写自定义编辑器脚本,将Unity Terrain的高度图数据“烘焙”为静态网格模型,并以OBJ格式导出。文章重点讲解了核心代码逻辑、分辨率选择对模型精度的影响,以及在3DMAX中导入和优化模型的实用技巧,旨在打通Unity与3DMAX之间的数据协作壁垒。

sky77的博客 448

Linux Component概述和高通component的使用

为了让subsystem按照一定顺序初始化设备才提出来的。subsystem中由很多设备模块,内核加载这些模块的时间不确定。子系统内有些模块是需要依赖其它模块先初始化才能进行自己初始化工作(例如v4l2 subdev和v4l2 video device),这时就要用到component框架。例如v4l2 subdev和v4l2 video device中,谁依赖谁先创建?

lz_1990的专栏 1610

8-1 Stacks of Flapjacks UVA120

题意: 有一叠煎饼在锅里 n n<=30张 每张都有一个数字 代表它的大小 厨师每次可以选择一个数k 把从锅底开始数第k张上面的煎饼全部反过来 即原来的在上面的煎饼现在到了下面 如 Sample Input 1 2 3 4 5 5 4 3 2 1 5 1 2 3 4 Sample Output 1 2 3 4 5 0 5 4 3 2 1 1 0 5 1...

weixin_30642267的博客 169

RTL8306交换机芯片与FPGA联调实战:5个网口+1个MAC的配置避坑指南

本文详细解析了RTL8306交换机芯片与FPGA联调中的关键技术难点,特别是MAC5寄存器的配置陷阱和PHY页切换机制。通过实战案例和优化策略,帮助开发者高效配置5个网口+1个MAC的工业级网络设备,提升系统稳定性和实时性。

vodka的博客 1096

Stacks of Flapjacks(翻煎饼) 蓝桥杯 每周一练

[问题描述](老师已经为宝宝们翻译好啦) Stacks and Queues are often considered the bread andbutter of data structures and find use in architecture, parsing,operating systems, and discrete event simulation.Stacks are als...

付某人的博客 289

飞牛fnNAS免费内网穿透之zerotier篇

本文介绍了如何通过ZeroTier实现飞牛NAS的远程文件共享。首先,用户需要在ZeroTier官网注册账号并创建虚拟局域网。接着,分别在Windows和飞牛NAS上安装ZeroTier客户端,并通过SSH登录飞牛NAS进行配置。安装完成后,用户可以在ZeroTier页面中授权设备加入虚拟局域网。最后,通过Windows的“网上邻居”功能访问飞牛NAS的共享文件夹,实现跨局域网的文件共享。这种方法不仅适用于文件共享,还可以用于打印机共享和远程桌面连接。

dgnankai的专栏 2465

STC单片机使用FatFs文件系统读取SD卡指定文件内容

STC单片机使用FatFs文件系统读取SD卡指定文件内容

perseverance51博客 2745

Stacks of Flapjacks(双端队列0v0)

Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event simulation. Stacks are also important in the...

qq_42711300的博客 218

【一 扣子客户案例合集】【 1.1 抖音电商:通过扣子智能体重塑电商服务新体验】

**摘要:**抖音电商借助扣子(Coze)智能体平台重塑客服体验,通过无代码开发、多模态交互和跨平台发布等功能,解决了传统客服高峰期压力大、成本高及响应机械等痛点。智能体采用直接面客与人工监管结合模式,实现高效精准服务,并通过解构流程、模块化设计优化系统架构。其技术优势包括零配置学习、意图识别、情绪感知等,实际应用中显著提升客服效率300%以上,改善用户体验。未来将进一步拓展至商品推荐、直播互动等场景,推动电商服务智能化升级。

商务合作|问题讨论|交流学习 请联系作者微信,加微信请务必注明来意,博客主页有联系方式 1570

UVa 120 - Stacks of Flapjacks解题报告

模拟排序题, 思路:从右到左扫描数组,把未排序的区间的最大数的位置j找到,然后将0到j的区间反转,再将这个最大数应在的位置i到0的区间反转一次,就完成了一次排序,重复进行,直到扫描到数组的最左边。需要注意边界条件的处理。 //120 - Stacks of Flapjacks #include #include using namespace std; int pan[40];

Yonah潇的专栏 710

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

解题报告 之 UVA120 Stacks of Flapjacks

解题报告 之 UVA120 Stacks of Flapjacks Description Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operatin

JUST CODE 694

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

UVa 120 - Stacks of Flapjacks 解题报告(暴力)

120 - Stacks of Flapjacks Time limit: 3.000 seconds

SF-_- 的 ACM 博客 703

UVa 120 Stacks of Flapjacks

题目要求模拟煎饼叠排序过程,通过翻转操作将煎饼按直径从小到大排列(顶部最小,底部最大)。每次翻转操作将指定位置及以上的煎饼顺序反转。解题采用贪心策略:从最大煎饼开始,依次将其翻转到目标位置。算法时间复杂度为O(n²),适用于最多30个煎饼的情况。输入为一行煎饼直径,输出原始叠和翻转步骤(以0结尾)。代码通过排序和标记位置实现翻转操作,确保每次最多两次翻转即可将一个煎饼归位。

寂静山林 965

UVa 120 Stacks of Flapjacks 【排序】

题目链接:UVa 120 Stacks of FlapjacksDescription:Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discrete event s

咸鱼の小窝 452

Stacks of Flapjacks(翻煎饼) UVA - 120 (贪心 排序)

堆栈和队列通常被认为是数据结构的面包和黄油,可用于体系结构、解析,操作系统和离散事件模拟。堆栈在形式语言理论中也很重要。 现在的问题涉及黄油和煎饼(而不是面包),同时还有一个根据唯一但完整的规则来翻煎饼的服务器。 给你一栈的煎饼,请你编写一个程序用于指示这个栈如何被排序以使得最大的煎饼在最下面而最小的煎饼在最上面。 煎饼的直径将被给出。 栈中的所有煎饼的直径都不一样。 对栈排序是通过一系列"翻...

Suprit's blog 945

UVa OJ 120 - Stacks of Flapjacks

UVa OJ 120 - Stacks of FlapjacksProblem  有一叠煎饼正在锅里。煎饼共有n(n≤30)张,每张都有一个数字,代表它的大小,如 图8-11所示。厨师每次可以选择一个数k,把从锅底开始数第k张上面的煎饼全部翻过来,即 原来在上面的煎饼现在到了下面。   设计一种方法使得所有煎饼按照从小到大排序(最上面的煎饼最小)。输入时,各个煎 饼按照从上到下的顺序给出。 In

Yuuki_Dach's Blog 525

排序综合-UVA120 煎饼 Stacks of Flapjacks题解(采用STL)

一、算法分析 首先看到这个题,就要想到对子序列进行排序的做法。那么解题思路就比较清晰了,即先找到子序列,再用题上特有的操作(翻面法),将子序列排序。具体做法如下例所示: 2 4 1 5 3 6 5 1 4 2 3 6 3 2 4 1 5 6 4 2 3 1 5 6 1 3 2 4 5 6 3 1 2 4 5 6 2 1 3 4 5 6 1 2 3 4 5 6 分析:①将数组进行排序,本例排序结果为...

numb_ac的博客 274

UVA 120 - Stacks of Flapjacks

输入数字是以回车结束每一行,注意只输入一个数字情况。感觉这道题答案应该不唯一。下面代码是从后往前搜索,如果在相应位置就过去;如果不在就交换到第0位置,然后在做一次交换到相应位置。 #include #include #include int cmp(const void *_a, const void *_b) { int* a = (int *)_a; in

zcube的技术博客 2476

UVa120 例题 8-1 煎饼 (Stacks of Flapjacks)

原题链接: UVa-120 参考博客: http://www.cnblogs.com/devymex/archive/2010/08/15/1799844.html 题目大意:   有N张正在锅里的一叠煎饼,每张都有一个数字,代表其直径大小。厨师每次可以选择一个数k,把从锅底开始数第k张上面的煎饼全部翻过来,即原来在上面的煎饼现在到了下面。要求设计一种方法使得所有煎饼按照从小到大排

Miracle42的博客 1486

Uva 120 - Stacks of Flapjacks(构造法)

UVA - 120Stacks of Flapjacks Time Limit:3000MS Memory Limit:Unknown 64bit IO Format:%lld & %llu Description Background Stacks and Queues are often c...

Dara2015的博客 221

UVA - 120 Stacks of Flapjacks

自己对该题的一些细节的分析,作为以后复习资料

Stay 315

uva 120 Stacks of Flapjacks(检索)

Stacks of Flapjacks  Background Stacks and Queues are often considered the bread and butter of data structures and find use in architecture, parsing, operating systems, and discr

不慌不忙、不急不躁 1539

uva120 Stacks of Flapjacks

题意:有一摞大小不一的煎饼,我们只能用铲子使之翻转,可以从最下面翻转,也可以选择上面几块翻转,翻转的位置是从底层往上数,例如整摞一起翻就是0。现要求在几次翻过之后饼是从小到大堆起来的,结束时位置打印0。 解法:首先选择出最大的饼,如果它不在最下面,就把它发到最上面,然后整摞反过来,最大的饼就在最下面了。然后忽略最大的饼,又是在整摞饼中选择最大的饼(也就是原来的第二大的饼),重复以上过程,知道所有

u010065754的专栏 585
下一篇: UVa 10160 Servicing stations解题报告
morestep
博客等级 码龄12年 20粉丝 88原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值