题目:这道题目的意思让人猛地一读有点反应不过来,简单解释下:

给定序列A:a1,a2,a3....,an,如果i<j且ai>aj则(ai,aj)称为序列A的一个倒置。

之后引出了序列的倒置表(主要这里有点不好理解),即由序列A可以得到序列B:b1,b2,b3...,bn,序列B满足在第J个上的数据bj表示所有在A序列中与j可以形成倒置的个数。

例如:题目给出的序列A: 5,9,1,8,2,6,4,7,3

则其倒置表为:2 3 6 4 0 2 2 1 0;

这里倒置表的第一个数据是2,则表示在序列A中与1形成倒置的有两个即:(5,1) (9,1),以此类推。。。

问题:下面题目的问题有两种,即:

1.给定原有序列计算倒置表;

2.给定倒置表计算出原有序列。

思路:问题1较为简单,直接用一个O(n^2)的循环遍历统计下就行

问题2的话有点绕但是也不难,例如给定倒置表B:2 3 6 4 0 2 2 1 0,则顺序遍历该倒置表,当i为1时b[i]=2,则从第一个空位开始数起,数够2个,1的位置在原序列中应该是第三个,因为任何正整数都可以和1形成倒置,所以前面两个数字既可以和1形成两个倒置;i=2时b[i]=3,则从第一个空位开始数起,数够3个,隔开1,把2放在第5个位置上,以此类推。

解答:见代码

#include <stdio.h>

int main()
{
int N,i,I[],O[];
while(scanf("%d",&N)!=EOF&&N)
{
getchar();
char flag;
scanf("%c",&flag); for(i=;i<=N;i++)
scanf("%d",&I[i]);
if(flag=='P')
{
for(i=;i<=N;i++)
{
int num=;
for(int j=;j<=N;j++)
{
if(I[j]==i)
break;
if(I[j]>i)
num++;
}
O[i]=num;
}
}
else
{
for(i=;i<=N;i++)
O[i]=-;
for(i=;i<=N;i++)
{
int num=;
for(int j=;j<=N;j++)
{
if(!I[i])
{
if(O[j]==-)
{
O[j]=i;
break;
}
else
continue;
}
else
{
if(num==I[i])
{
if(O[j]==-)
{
O[j]=i;
break;
}
else
continue;
}
if(O[j]==-)
{
num++;
}
}
}
}
}
for(i=;i<N;i++)
printf("%d ",O[i]);
printf("%d\n",O[i]);
} return ;
}

ZOJ Problem Set - 1201 Inversion的更多相关文章

  1. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  2. ZOJ Problem Set - 1025解题报告

    ZOJ Problem Set - 1025 题目分类:基础题 原题地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=10 ...

  3. ZOJ Problem Set - 3829Known Notation(贪心)

    ZOJ Problem Set - 3829Known Notation(贪心) 题目链接 题目大意:给你一个后缀表达式(仅仅有数字和符号),可是这个后缀表达式的空格不幸丢失,如今给你一个这种后缀表达 ...

  4. ZOJ Problem Set - 2563 Long Dominoes 【如压力dp】

    称号:ZOJ Problem Set - 2563 Long Dominoes 题意:给出1*3的小矩形.求覆盖m*n的矩阵的最多的不同的方法数? 分析:有一道题目是1 * 2的.比較火.链接:这里 ...

  5. ZOJ Problem Set - 3593 拓展欧几里得 数学

    ZOJ Problem Set - 3593 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3593 One Person ...

  6. ZOJ Problem Set - 2297 Survival 【状压dp】

    题目:ZOJ Problem Set - 2297 Survival 题意:给出一些怪,有两个值,打他花费的血和能够添加的血,然后有一个boss,必须把小怪全部都打死之后才干打boss,血量小于0会死 ...

  7. ZOJ Problem Set - 3820 Building Fire Stations 【树的直径 + 操作 】

    题目:problemId=5374" target="_blank">ZOJ Problem Set - 3820 Building Fire Stations 题 ...

  8. ZOJ Problem Set - 3229 Shoot the Bullet 【有上下界网络流+流量输出】

    题目:problemId=3442" target="_blank">ZOJ Problem Set - 3229 Shoot the Bullet 分类:有源有汇 ...

  9. ZOJ Problem Set - 3822Domination(DP)

    ZOJ Problem Set - 3822Domination(DP) problemCode=3822">题目链接 题目大意: 给你一个n * m的棋盘,每天都在棋盘上面放一颗棋子 ...

随机推荐

  1. 工作中那些提高你效率的神器(第二篇)_Listary

    引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...

  2. spring-data-jpa 方法名关键字的命名规范

  3. c#多线程介绍(上)

    转载原文:这里是链接内容 转载原文:这里写链接内容 转载原文:这里写链接内容 (重要事情说三遍) 引言 本文主要从线程的基础用法,CLR线程池当中工作者线程与I/O线程的开发,并行操作PLINQ等多个 ...

  4. JavaScript面向对象之我见

    序言 在JavaScript的大世界里讨论面向对象,都要提到两点:1.JavaScript是一门基于原型的面向对象语言 2.模拟类语言的面向对象方式.对于为什么要模拟类语言的面向对象,我个人认为:某些 ...

  5. js中几种实用的跨域方法原理详解

    这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据.只要协议.域名.端口有任何一个不同,都被 ...

  6. %~dp0是什么意思

    转载自 www.cnblogs.com/yxsylyh 转载内容如下: cd /D %~dp0的意思如下: 更改当前目录为批处理本身的目录 比如你有个批处理a.bat在D:\qq文件夹下 a.bat内 ...

  7. 每天一个linux命令(45):free 命令

    free命令可以显示Linux系统中空闲的.已用的物理内存及swap内存,及被内核使用的buffer.在Linux系统监控的工具中,free命令是最经常使用的命令之一. 1.命令格式: free [参 ...

  8. Spark读取HBase

    背景:公司有些业务需求是存储在HBase上的,总是有业务人员找我要各种数据,所以想直接用Spark( shell) 加载到RDD进行计算 摘要: 1.相关环境 2.代码例子 内容 1.相关环境 Spa ...

  9. LInux MySQL 数据库 的一些操作

    数据库安装: ………… 创建数据库连接新用户: 1.登录mysql #mysql -u root -p 2.新增用户 insert into mysql.user(Host,User,Password ...

  10. Oralce 重建EM服务,OracleDBConsoleOracle

    今天打开Oracle ,想进em看看,结果发现OracleDBConsoleOracle服务老是报错: OracleDBConsoleOracle 服务因 2 (0x2) 服务性错误而停止. 搞不懂, ...