传送门:http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=2130

时间限制(普通/Java):2000MS/20000MS     内存限制:65536KByte

描述

Professor Permula gave a number of permutations of the n integers 1, 2, ... , n to her students. For each integer i, (1 ≤ in), she asks the students to write down the number of integers greater than i that appear before i in the given permutation. This number is denoted ai. For example, if n = 8 and the permutation is 2, 7, 3, 5, 4, 1, 8, 6, then a1 = 5 because there are 5 numbers (2, 7, 3, 5, 4) greater than 1 appearing before it. Similarly, a4 = 2 because there are 2 numbers (7, 5) greater than 4 appearing before it.

John, one of the students in the class, is studying for the final exams now. He found out that he has lost the assignment questions. He only has the answers (the ai's) but not the original permutation. Can you help him determine the original permutation, so he can review how to obtain the answers?

输入

The input consists of a number of test cases. Each test case starts with a line containing the integer n (n ≤ 500). The next n lines give the values of a1, a2, ... , an. The input ends with n = 0.

输出

For each test case, print a line specifying the original permutation. Adjacent elements of a permutation should be separated by a comma. Note that some cases may require you to print lines containing more than 80 characters.

样例输入

8
5
0
1
2
1
2
0
0
10
9
8
7
6
5
4
3
2
1
0
0

样例输出

2,7,3,5,4,1,8,6
10,9,8,7,6,5,4,3,2,1

 

题意:就是给你每个数的逆序数,让你求这个序列。比如说对于序列:2,7,3,5,4,1,8,6 。在出现1之前,有5个比1大的数:2,7,3,5,4。所以a[1] = 5,又比如 6,在6之前有2个比它大的,即:7,8。所以a[6] = 2

      题目就是给了a[1]到a[n],分别代表1---n的逆序数,要求求出这个序列

思路:从后往前来。拿题目中的样例1来解释:序列:2,7,3,5,4,1,8,6

    a[8] 只能等于0  因为 8 是最大的那个数

    a[7] 只能等于0或者 1,因为7是第二大的,a[7]等于0说明7在8的左边,等于1说明7在8的右边

    a[6] 只能等于0或者1或者2,像题目中的,等于2的话,说明6在 {7,8} 这个序列的右边

   以此类推即可把整个序列求出来

注意输出0结束,以及分割用逗号

代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<vector>
#define LL long long
using namespace std;
int a[],n;
void solve(){
for(int i = ; i < n ; i ++){
scanf("%d",&a[i]);
}
vector<int>v;
v.push_back(n);
for(int i = n-;i >= ; i--){
v.insert(v.begin()+a[i-],i);
}
for(int j = ; j < v.size() ; j++){
j == ? printf("%d",v[j]):printf(",%d",v[j]);
}
puts("");
}
int main()
{
while(scanf("%d",&n),n){
solve();
}
return ;
}

TOJ 2130: Permutation Recovery(思维+vector的使用)的更多相关文章

  1. hdoj 2404 Permutation Recovery【逆序对】

    Permutation Recovery Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. Permutation Recovery(模拟)

    Permutation Recovery Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  3. Permutation(构造+思维)

    A permutation p is an ordered group of numbers p1,   p2,   ...,   pn, consisting of ndistinct positi ...

  4. D. Make a Permutation!(思维)

    D. Make a Permutation! time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. 网络寻路(思维+vector的应用)-----------蓝桥备战系列

    标题:网络寻路 X 国的一个网络使用若干条线路连接若干个节点.节点间的通信是双向的.某重要数据包,为了安全起见,必须恰好被转发两次到达目的地.该包可能在任意一个节点产生,我们需要知道该网络中一共有多少 ...

  6. Codeforces 1159E Permutation recovery(构造+拓扑)

    这道题其实只要解决了什么时候输出 -1 ,那么此题的构造方法也就解决了.首先我们可以观察这组 3 3 4 和 3 4 4 ,可以算出第二组是不成立的,在观察一组 2 3 4 5 和  3 2 4 5 ...

  7. Codeforces 1158C Permutation recovery

    https://codeforces.com/contest/1158/problem/C 题目 已知 $p_1, p_2, \dots, p_n$ 是 $1$ 到 $n$ 的一个排列. 给出关于这个 ...

  8. [Locked] Palindrome Permutation I & II

    Palindrome Permutation I Given a string, determine if a permutation of the string could form a palin ...

  9. 【LeetCode】60. Permutation Sequence

    题目: The set [1,2,3,…,n] contains a total of n! unique permutations. By listing and labeling all of t ...

随机推荐

  1. Mysqli 数据库连接类

    <?php namespace Lib; // 数据库连接类 class DB { //私有的属性 private static $dbcon = false; private $host; p ...

  2. ES6 模块导入import 导出export 和module.export

    ES6中新增了模块的导入和导出功能 在实际过程中可以使用 import 和 export 对模块进行导入和导出操作,具体如下 1. 名字导入/导出  (导入名字必须与导出的一致,导入时需要用花括号) ...

  3. 20165304《JAVA程序设计》第四周学习总结

    教材内容总结 第五章 子类与继承 1.子类声明中通常用关键字extend来定义一个子类(class 子类名 extend 父类名{}) 2.子类和父类在同一包中的继承性,继承的成员变量或方法的访问权限 ...

  4. django form 的内置字段类型

    定义的form类如下: from django import forms from django.forms import widgets class AddHouseForm(forms.Form) ...

  5. 我要带徒弟学写JAVA架构,引路架构师之路(Jeecg开源社区)

    带徒弟学JAVA架构(Jeecg社区)      Java程序员如何打破工作2,3年的瓶颈问题,如何更上一层楼?      太多的巧合,让我接触到了开源,通过JEECG与很多朋友交流后,让我有了帮助别 ...

  6. 06——react组件的基本定义和使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. text-align: justify;浏览器、安卓手机不兼容问题

    https://segmentfault.com/a/1190000013146385

  8. hadoop-2

    AsyncDispatcher,直接看代码 @Override protected void serviceStart() throws Exception { //start all the com ...

  9. BerOS File Suggestion(stl-map应用)

    Polycarp is working on a new operating system called BerOS. He asks you to help with implementation ...

  10. ElasticSearch centos7 安装

    参考: https://blog.csdn.net/u014180504/article/details/78733827 https://blog.csdn.net/youzhouliu/artic ...