码农奇迹
专注、专业、无畏的前行

Problem      :http://acm.hrbeu.edu.cn/index.php?act=problem&proid=5001
题意:
对于这样的一个数列{A1,A2,A3,A4,A5}叫permutation
如果对于i<j,Ai>Aj;则称其为一对倒置对,如{3,1,4,2}有(3,1)(3,2)(4,2)是它的一些倒置对;
对于另一个数列{B1,B2,B3,B4,B5}叫做inversion table
如果对于i,每个Bi表示在i左边并大于i的个数;如 有一数列A={5,9,1,8,2,6,4,7,3},则对于这一数列的inversion table 为(2 3 6 4 0 2 2 1 0) 其中B2=3,表示在A中比2大且在其左边的数有3个,即(5,9,8);
题目要求:
给出一个permutation,求出inversion table或给出inversiontable求permutation;
解题思路:
题目要分两种分别计算,P和I的不同情况

如果是P,则对每一个数计算它前面有几个比它大的,然后在数组中它的位置里记下这个数

如果是I,则应该从1开始算,每次找到数的正确位置,将这个数放入数组位置中。

Code:

Code

 

posted on 2009-08-16 17:07  @编程浪子@  阅读(248)  评论(0编辑  收藏  举报