zoukankan      html  css  js  c++  java
  • 逆序数还原(FZU)

    逆序数还原
    Accept: 244 Submit: 451
    Time Limit: 1000 mSec Memory Limit : 32768 KB
    Problem Description

    有一段时间Eric对逆序数充满了兴趣,于是他开始求解许多数列的逆序数(对于由1…n构成的一种排列数组a,逆序数即为满足ij,ai>aj的数字对数),但是某天他发现自己遗失了原来的数列,只留下之前计算过程中留下的各个数字对应的逆序数,现在请你帮他还原出原序列。
    Input

    数据有多组,请处理到文件结尾。

    每组数据第一行为一个整数N(1<=N<=1000),表示该序列的数字个数。

    第二行为N个整数,第i个数字表示排在ai之后比ai小的数字个数。
    Output

    输出为一行N个整数,表示原数列。
    Sample Input
    5
    2 0 1 0 0
    Sample Output
    3 1 4 2 5
    用vector实现

    #include <set>
    #include <map>
    #include <list>
    #include <stack>
    #include <cmath>
    #include <vector>
    #include <queue>
    #include <string>
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define PI cos(-1.0)
    #define RR freopen("input.txt","r",stdin)
    
    using namespace std;
    
    typedef long long LL;
    
    const int MAX = 1e5;
    
    int n;
    int a[1100];
    
    int main()
    {
        int data;
        while(~scanf("%d",&n))
        {
            vector<int>Q;
            vector<int>::iterator it;
            for(int i=1;i<=n;i++)
            {
                Q.push_back(i);
            }
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&data);
                a[i]=Q[data];
                it=Q.begin()+data;
                Q.erase(it);
            }
            for(int i=1;i<=n;i++)
            {
                if(i!=1)
                {
                    printf(" ");
                }
                printf("%d",a[i]);
            }
            printf("
    ");
        }
        return 0;
    }
    
  • 相关阅读:
    设计模式之备忘录模式
    特殊传参方式
    页面响应效率测试
    composer安装的包git无法提交的解决办法是因为安装的时候生成了.git隐藏文件
    数据结构和算法深入浅出理解
    中缀表达式转换为后缀表达式
    p2p技术
    【自动化测试】WebDriver使用
    pt-query-digest简介使用
    mac编译openJDK8
  • 原文地址:https://www.cnblogs.com/juechen/p/5255947.html
Copyright © 2011-2022 走看看