【POJ 1804】 Brainman
2024-08-30 20:24:49
【题目链接】
【算法】
本题是一个很经典的问题 : 归并排序求逆序对数,可以用分治算法解决
分治,分而治之,分治算法的思想就是将一个问题转化为若干个子问题,对这些子问题分别求解,最后,
通过子问题的答案反推得到总的答案
通过归并排序求逆序对数的算法流程图如下 :
【代码】
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
#include <stack>
#include <limits.h>
using namespace std;
#define MAXN 1010 int i,T,n,ans;
int a[MAXN]; inline void init()
{
int i;
ans = ;
scanf("%d",&n);
for (i = ; i <= n; i++) scanf("%d",&a[i]);
}
inline void _merge(int l,int r)
{
int i;
int mid = (l + r) >> ;
int t1 = l,t2 = mid + ;
int len = ;
static int tmp[MAXN];
while (t1 <= mid && t2 <= r)
{
if (a[t1] <= a[t2])
{
tmp[++len] = a[t1];
ans += t2 - mid - ;
t1++;
} else
{
tmp[++len] = a[t2];
t2++;
}
}
while (t1 <= mid)
{
tmp[++len] = a[t1];
t1++;
ans += r - mid;
}
while (t2 <= r)
{
tmp[++len] = a[t2];
t2++;
}
for (i = ; i <= r - l + ; i++) a[l+i-] = tmp[i];
}
inline void merge_sort(int l,int r)
{
int mid;
if (l == r) return;
else
{
mid = (l + r) >> ;
merge_sort(l,mid);
merge_sort(mid+,r);
}
_merge(l,r);
}
int main() { scanf("%d",&T);
for (i = ; i <= T; i++)
{
init();
merge_sort(,n);
printf("Scenario #%d:\n",i);
printf("%d\n\n",ans);
} return ; }
最新文章
- 【加精】手机话费充值API接口(PHP版)
- oracle客户端安装配置 tnsnames.ora文件
- Javascript use strict模式和对象
- 清空stringbuilder
- ELK-Python(三)
- 【转】Windows下搭建cvs服务器
- poj 2367 Genealogical tree
- Collection Operators
- 转:USB主机控制器(Host Controller)--深入理解
- USB2.0的基本学习
- 【译】Yarn上常驻Spark-Streaming程序调优
- JavaWeb之Eclipse中使用Maven构建SpringMVC项目
- SQL Server-聚焦sp_executesql执行动态SQL查询性能真的比exec好?
- 4.Apache POI使用详解
- WPF在在设计模式,使用动态样式
- python笔记---数据基础类型
- Centos7配置TiDB集群
- Git同时使用不同平台代码仓库
- 导入项目出现: Unable to resolve target ‘android-10′ 解决办法
- 微软七届MVP桂素伟:移动互联网与职业规划
热门文章
- Project Euler
- DB2隔离级别
- nginx配置location项的URL匹配规则
- [学习资料] Tiny210(S5PV210) u-boot移植
- 2. Java中的垃圾收集 - GC参考手册
- 87-Moving average of oscillator,移动平均振荡指标.(2015.7.4)
- 集训第五周动态规划 J题 括号匹配
- C51 继电器 个人笔记
- Android BGABadgeView:BGABadgeImageView以及BGABadgeRelativeLayout(4)
- React &; search &; keyboard ghost