逆序数:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。
如:
P 5 9 1 8 2 6 4 7 3
I 2 3 6 4 0 2 2 1 0
1前面比1大的有2个
2前面比2大的有3个
3前面比3大的有6个。。。。
1201:在permutation 和inversion之间转换。
思路:P-->I
双重循环,对每个数统计前面比它大的有几个
I-->P
双重循环。从最小的开始排起,每次从头扫描,给比它大的值留下空位。
#include<stdio.h>
#include<memory.h>
#include<iostream>
using namespace std;
int res[51];
int src[51];
void P2I(int n)
{
int count=0;
for(int i=1;i<=n;i++)
{
count=0;
for(int j=1;j<=n;j++)
{
if(src[j]>i)
count++;
else if(src[j]==i)
break;
}
res[i]=count;
}
}
void I2P(int n)
{
memset(res,0,sizeof(int)*51);
int count=0;
for(int i=1;i<=n;i++)
{
count=0;
for(int j=1;j<=n;j++)
{
if(res[j]==0)
count++;
if(count>src[i])
{
res[j]=i;
break;
}
}
}
}
int main()
{
int n;
char type;
while(1)
{
cin>>n;
if(n!=0)
{
cin>>type;
for(int i=1;i<=n;i++)
cin>>src[i];
if(type=='P')
P2I(n);
else if(type=='I')
I2P(n);
}
else
break;
for(int i=1;i<n;i++)
cout<<res[i]<<' ';
cout<<res[n]<<endl;
}
}
分享到:
相关推荐
在构建线段树时,需要考虑如何根据第一个元素移动到最后一个元素时逆序数的变化规律来进行更新。 - **POJ 2828** 和 **POJ 2180**:这两道题都需要从后往前推进,线段树用于存储空位数量,以便快速查找空位的位置。...
以下是对所列OJ网站的概述与各自特色: ### 1. 计蒜客 (GSL) - **特点**:面向大学生,特别是计算机专业学生,提供丰富的算法训练资源。 - **适用对象**:大学生、编程爱好者。 - **优势**:题目难度分级明确,...
- **特点**: 作为计算机科学领域的经典教材之一,CLRS全面而深入地介绍了算法的基础理论与实践应用。 - **适用人群**: 适合初学者到高级研究人员,是学习算法不可多得的好书。 - **内容覆盖**: - 数据结构 - 分析...
- **数学建模**:学习如何将实际问题转化为数学模型进行求解。 - **数论算法**:包括质因数分解、扩展欧几里得算法等。 以上内容为ACM新手训练方案中的核心知识点概述,通过对这些知识点的学习和实践,可以帮助初学...
- **题目描述**:这是一个单词接龙游戏的问题,可以通过构建图来解决,其中节点代表单词,边代表单词之间的转换关系。 - **解题思路**:构建一个无向图,然后判断是否存在欧拉回路。 - **数据结构**:使用邻接表...
- 经常参与ZOJ等在线评测系统的练习。 - 参加校内或线上的模拟赛。 - 注重团队协作能力的培养。 - 养成良好的编程习惯和调试能力。 #### 四、常见算法与数据结构详解 - **图论**: - 最短路径算法(Floyd、...
【ACM竞赛常用算法与数据结构】是针对ACM/ICPC(国际大学生程序设计竞赛)的准备资料,这类竞赛旨在提升大学生在分析问题和解决问题上的能力,同时也是IT业界发掘人才的重要平台。以下是对竞赛中常见算法和数据结构...
- **排列组合生成**:实现生成所有可能的排列或组合,这对于全搜索和回溯算法非常重要。 这个模板库不仅提供了代码实现,还包含了解决相关问题的策略和技巧,帮助参赛者快速理解和应用这些算法,提高解题效率。...
- 解决ZOJ等网站上的难题 - 参加各类在线比赛,体验比赛氛围 - 对已解决的题目进行深入分析,探索更优解法 通过以上训练计划,可以在短时间内迅速提高算法和编程能力,更好地应对各种类型的ACM竞赛。
9. **Inversion 1201** - 逆序计数通常与排序算法相关,可能需要用到归并排序或快速排序中的逆序对统计。 10. **Martian Addition 1205** - 这是一个自定义运算符的问题,可能需要理解位运算和自定义规则。 11. **...
根据提供的文件信息,本文将对“OnlineJudge站点网址”这一主题进行详细的知识点解析与介绍。OnlineJudge(简称OJ)是一种在线评测系统,广泛应用于程序设计竞赛领域,供编程爱好者、学生及教师等群体使用,以提升...
这项赛事在全球范围内享有极高的声誉,被认为是衡量学生算法设计与实现能力的重要指标之一。 #### 2. ACM程序设计入门 ##### 2.1 ACM/ICPC简介 - **历史**:自1977年起,ACM/ICPC已经成为全球规模最大的大学生程序...
- **平台**: 例如浙江大学在线评测系统 (ZOJ)。 - **功能**: 在线提交代码、获取即时反馈。 - **流程**: - 注册账号并登录。 - 查看题目描述和要求。 - 编写并提交代码。 - 获取评测结果,根据结果调整代码直至...
【标题】"ZOJ-CPP.zip" 是一个包含ZOJ(在线判题系统ZeroJudge)网站上多个C++编程练习解答的压缩包。这个压缩包的名称表明它专注于C++语言,很可能是一个学习资源,旨在帮助初学者理解和解决动态规划问题。 【描述...
- 动态规划是一种解决多阶段决策问题的有效方法,通过把原问题分解成相互重叠的子问题来求解。 - 典型应用场景:背包问题、最长公共子序列等。 2. **贪心算法(Greedy Algorithm)** - 贪心算法在每一步选择...