(白书训练计划)UVa 120 Stacks of Flapjacks(构造法)

题目地址:UVa 120

水题。从最大的开始移,每次都把大的先翻到最上面,再翻到下面。

代码如下:

#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
#include <queue>
#include <map>
#include <set>
#include <algorithm>

using namespace std;
int a[500], b[500], d[500];
int main()
{
    int i, j, flag, cnt, n, x, m;
    while(scanf("%d",&a[0])!=EOF)
    {
        b[a[0]]=0;
        d[0]=a[0];
        i=1;
        cnt=0;
        while(getchar()!='\n')
        {
            scanf("%d",&a[i]);
            d[i]=a[i];
            b[a[i]]=i;
            i++;
        }
        n=i;
        m=n;
        for(i=0; i<n; i++)
        {
            printf("%d",a[i]);
            if(i!=n-1)
                printf(" ");
        }
        printf("\n");
        sort(d,d+n);
        while(n--)
        {
            if(b[d[n]]==n)
                continue ;
            if(b[d[n]]!=0)
            {
                x=b[d[n]];
                printf("%d ",m-x);
                for(i=0; i<=x; i++)
                {
                    b[a[i]]=x-b[a[i]];
                }
                for(i=0; i<=x/2; i++)
                {
                    int t=a[i];
                    a[i]=a[x-i];
                    a[x-i]=t;
                }
            }
            for(i=0; i<=n; i++)
            {
                b[a[i]]=n-b[a[i]];
            }
            for(i=0; i<=n/2; i++)
            {
                int t=a[i];
                a[i]=a[n-i];
                a[n-i]=t;
            }
            printf("%d ",m-n);
        }
        printf("0\n");
    }
    return 0;
}
时间: 2024-12-27 23:09:00

(白书训练计划)UVa 120 Stacks of Flapjacks(构造法)的相关文章

[2016-03-03][UVA][120][Stacks of Flapjacks]

[2016-03-03][UVA][120][Stacks of Flapjacks] UVA - 120 Stacks of Flapjacks Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu Submit Status Description Background Stacks and Queues are often considered the bread and butter of data s

uva 120 stacks of flapjacks ——yhx

 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

UVA 120 Stacks of Flapjacks(翻煎饼,啦啦啦啦~)

Problem A : 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

UVa 120 Stacks of Flapjacks

题意:给一摞随意摞的煎饼,要按直径从上到下递增的顺序排列,求翻的顺序. 思路:贪心. 1,读取煎饼数据,新建一个数组,复制数据,排序,作为参考. 2,从最大直径(maxNum)的煎饼开始,看其是否在底层,是的话就寻找上一层最大的. 3,假如不在底层,看其在不在顶层,在顶层就把全部煎饼翻过来,使当前需要操作的最大的直径煎饼放在最下. 4,假如不在底层也不在顶层,就找到它,先翻到顶层,然后步骤同3. 直到maxNum代表数据为最小直径的煎饼. 代码: #include <iostream> #in

UVa120 Stacks of Flapjacks (构造法)

链接:http://vjudge.net/problem/18284 分析:摊煎饼问题.以从大到小的顺序依次把每个数排到正确的位置,比如当处理第i大的煎饼时,是不会影响到第1,2,3,...,i-1大的煎饼的(它们已经正确的翻到了煎饼堆底部的i-1个位置上),翻煎饼的方法是先翻到最上面,然后翻到正确的位置,翻好了以后煎饼堆底部i个位置上的煎饼都已经正确放好就不用管了,接下来就是找第i+1大的煎饼放到下数上第i+1个位置上,不过对于当前最大煎饼的位置要分类讨论,如果已经在其正确位置上就什么也不用做

(白书训练计划)UVa 11054 Wine trading in Gergovia(等价转换)

题目地址:UVa 11054 很巧妙的一道题,这题是利用的等价转换,对每一条路来说,假如右边生产的比左边的多x,那么不管起点是哪,终点是哪,都可以把左右两侧的看成两个点,要从这条路上运送x个劳动力.再由于总和是0,所以只需要算出一端的总和就可以,这样只要遍历一遍就可以算出来了.写出代码就很简单了... 代码如下: #include <iostream> #include <stdio.h> #include <string.h> #include <stdlib.

(白书训练计划)UVa 1152 4 Values whose Sum is 0(中途相遇法。。)

题目地址:UVa 1152 先枚举A集合与B集合的和,存起来,然后再枚举C集合与D集合的和,看与存起来的值有多少个是互为相反数的.水题.找存起来的值时可以用二分找. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctyp

(白书训练计划)UVa 1605 Building for UN(构造法)

题目地址:UVa 1605 一道答案特判的题.最简单的方法是只构造两层,第一层中第i行全是i国家,第二层中第i列全是i国家.这样就保证了所有的国家都会相邻. 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <math.h> #include <ctype.h&

(白书训练计划)UVa 12627 Erratic Expansion(递归+找规律)

题目地址:UVa 12627 这题是先找规律,规律在于对于第k个小时的来说,总是可以分成右下角全是蓝色气球,右上角,左下角与左上角三个一模一样的k-1个小时的气球.这样的话,规律就很清晰了,然后用递归做比较方便... 代码如下: #include <iostream> #include <cstdio> #include <string> #include <cstring> #include <stdlib.h> #include <ma