当前位置: 首页 > news >正文

做h5哪些网站好 知乎用vs怎么做网站的导航

做h5哪些网站好 知乎,用vs怎么做网站的导航,上海网站设计建设,公众号制作用什么软件审题: 本题需要我们找到给定顺序数据的所有逆序对数并输出逆序对数 思路: 方法一:双层for循环 根据逆序对的定义,只要是满足索引和数值呈负相关的两个数,他们就是一个逆序对。 也就是说索引小的数值却比索引大的数值更…

审题:

本题需要我们找到给定顺序数据的所有逆序对数并输出逆序对数

思路:
方法一:双层for循环

根据逆序对的定义,只要是满足索引和数值呈负相关的两个数,他们就是一个逆序对。

也就是说索引小的数值却比索引大的数值更大,此时就是逆序对

那么我们可以第一层循环确定逆序对的左值,然后第二层循环去寻找逆序对的右值。循环后就可以得出所有的逆序对数了

但是时间复杂度为n^2,运行次数为1e11级别,会超时

方法二:分治思想

其实我们可以模仿归并排序的方式进行逆序对查找,我们先将当前区间分为左段和右段,然后先查找左段区间内的逆序对数,右段区间内的逆序对数,最后查找左段区间与右段区间跨区间的逆序对数

其中查找左段和右段的逆序对数可以直接调用自身进行递归处理,因为他们是同样处理方法的问题

难点:跨区间逆序对数查找

由于进行跨区间查找之前左右段的内部逆序对数已经查找完成,且跨区间查找的结果不会受左右段自身顺序影响,所以我们对左右段区间进行升序排序是不会影响最终逆序对数的。

于是我们就可以利用双指针的思想查找跨区间逆序对了。

一共有三种情况

情况1:左边值小于右边值

由于两段区间都是升序排序的,此时说明cur1所指向的数据不可能组成逆序对,直接cur1++

情况2:左边值等于右边值

与情况1类似,此时也是不可能组成逆序对

情况3:左边值大于右边值

此时cur2所指向的数据和cur1所指向的数据可以组成逆序对,且由于cur1后面的数据也是大于cur1所指向的数据的,所以cur2指向的数据也可以和剩下的左段区间cur1后面的所有数据组成逆序对

综上:递归函数的功能就是先对区间查找逆序对数并返回,查找完成后再进行升序排序

解题:

#include<iostream>
using namespace std;
const int N = 5e5 + 10;
typedef long long ll;
int n;
ll a[N], tmp[N];
//先计算当前区间的逆序对次数并返回然后排序当前区间
ll merge(int left, int right)
{if (left >= right) return 0;ll cnt = 0;int mid = (left + right) / 2;//分别统计左段区间和右端区间的逆序对数并将他们进行排序cnt += merge(left, mid);cnt += merge(mid + 1, right);//根据排好序的左右区间计算跨区间逆序对数int cur1 = left; int cur2 = mid + 1;int i = left;while (cur1 <= mid && cur2 <= right){if (a[cur1] <= a[cur2]) tmp[i++] = a[cur1++];else{cnt += mid - cur1 + 1;//计上逆序对数tmp[i++] = a[cur2++];}}while (cur1 <= mid) tmp[i++] = a[cur1++];while (cur2 <= right) tmp[i++] = a[cur2++];//对当前left~right区间进行排序for (int j = left; j <= right; j++){a[j] = tmp[j];}return cnt;
}
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];}cout << merge(1, n) << endl;return 0;
}

1.tmp是要用来将数据按顺序存入然后将数据转入a数组的模拟数组,用于让区间变为升序

2.cnt需要为longlong类型,因为数据个数有5e5,但是逆序对对数可能会有极多对。

P1908 逆序对 - 洛谷

http://www.yayakq.cn/news/557518/

相关文章:

  • 上饶建站公司网站可信认证对企业有哪些优势
  • 什么公司需要建立网站吗湖北省建设局网站
  • 网站建设需要哪些信息校园综合门户网站建设方案
  • 购物网站排名 2019wordpress鼠标跟随
  • 要怎样做网站发到百度上面应用软件开发公司
  • 网站策划做营销推广线上平台建设怎么做
  • 常州做网站建设的公司做动效网站
  • 成都网站建设选择到访率龙城网站建设
  • 怎样做一个网站赚钱吗网站做电源
  • 上海有哪些优化网站推广公司wordpress页面静态化
  • 庆阳网站设计与建设山东临沂网站建设
  • 查询网站收录施工企业审图ppt
  • 如何做宣传推广的网站链接做装修效果图的网站有哪些软件
  • 个人如何开网站网站改版 翻译
  • 如何建微信微网站哪个网站做物业贷
  • p2p理财网站建设哈尔滨建设工程批前公示
  • wordpress企业建站模版营销型网站是啥意思
  • 一般通过后补贴什么时候到优化设计六年级下册语文答案
  • 聚成网站建设网站需要具备条件
  • 雇人做淘宝网站多少钱关于建设信息网站的请示
  • 如何建立网站管理系统做淘宝店铺有哪些好的网站
  • 青海西宁学做网站在哪服装设计参考网站
  • 网站后端性能优化措施网站开发上海工资
  • 关于网站建设的网站有哪些深圳制作网站怎么样
  • 山东做网站潍坊做网站哪家公司最好
  • 合肥网站建设培训学校百度小说搜索热度排行榜
  • 网站建设属于无形资产哪一类网站开发未来发展趋势
  • 佛山禅城网站建设教你如何做网络营销推广
  • 手表网站欧米茄官方小红书信息流广告
  • 宣武上海网站建设wordpress 微信h5