首页 > 珂朵莉的数列
头像 苟且的狮子
发表于 2020-07-24 15:43:29
离散化,树状数组,大数简单输出 题意: 珂朵莉给了你一个序列,有 个子区间,求出她们各自的逆序对个数,然后加起来输出 输入描述:第一行一个数 n 表示这个序列 a 的长度 之后一行 n 个数,第i个数表示ai 输出描述:输出一行一个数表示答案 分析: 树状数组进阶中!!!!!!!!!这题大佬 展开全文
头像 钱逸凡
发表于 2020-10-24 23:25:01
前言 我看到题解区清一色的离散化+树状数组,所以我就写了一点不一样的,其实逆序对问题用归并排序也是一个很好的解法 题目解释 题目描述中的个子区间指的是n个一个数的子区间,n-1个连续两个数的子区间,n-2个连续3个数的子区间,…… 题目的坑点 本题的数据规模很大(n<=1000000(一百万 展开全文
头像 Severus.
发表于 2020-07-08 23:23:00
题目描述 珂朵莉给了你一个序列,有个子区间,求出她们各自的逆序对个数,然后加起来输出 输入描述: 第一行一个数 n 表示这个序列 a 的长度之后一行 n 个数,第i个数表示ai 输出描述: 输出一行一个数表示答案 题解 直接搞肯定不行了,那我们就考虑每一对逆序数对于答案的贡献吧。假如a[ 展开全文
头像 威风镰鼬
发表于 2021-06-15 14:46:51
思路 可以顺便把这道一模一样的题给A掉Luogu P5463 小鱼比可爱(加强版)各位可以做完《逆序数》再过来,我是用归并排序写的。考虑到对于一个逆序对<i,j>,i∈[l,m],j∈[m+1,r],那么它是所有区间[x,y],x∈[l,i],y∈[j,r]中的逆序对,每一次merge计 展开全文
头像 shyyhs
发表于 2021-01-20 18:48:13
emmm,我觉得是水题. 另外存下__int128的输入输出~好困啊! #include <bits stdc++.h> using namespace std; typedef long long ll; const int N=1e6+50; ll n; ll w[N],c[N],v 展开全文
头像 Gurenge
发表于 2021-02-13 21:49:12
题意 珂朵莉给了你一个序列,求出每个子区间的逆序对个数,然后加起来输出对于100%的数据,n <=1000000 ,0 <= 序列中每个数 <= 1000000000 解题思路 树状数组+离散化先考虑简单的问题,如果是单独求逆序对,即离散化之后,边往树状数组中插元素边统计逆序对该题 展开全文
头像 rk_no
发表于 2020-07-01 15:41:57
题目: 珂朵莉给了你一个序列,有个子区间,求出她们各自的逆序对个数,然后加起来输出。对于100%的数据,n <=1000000 ,0 <= 序列中每个数 <= 1000000000 做法: 换个角度,题目要我们求的是每个逆序对在多少个子区间内。那么对于一个逆序对,它的贡献就是理解 展开全文
头像 hnust_zhouzisheng
发表于 2020-07-02 10:09:35
离散化 + 树状数组 先看一下一般求逆序数的思路:设置vis数组,表示数字在前面遍历过程中出现的次数;遍历数组,vis[ar[i]]加一,然后求出大于ar[i]的数在前面出现的次数并加入到ans中。当序列数字过大是可以采用离散化处理,因为只需要知道大小关系即可,不必知道到底大了多少;对于求大于ar[ 展开全文
头像 PhantomSamurai
发表于 2020-07-09 11:55:02
description:所有子区间中逆序对的个数 solution:暴力肯定是不可取的 考虑一个逆序对的贡献,当且仅当一个区间包含了该逆序对才对该区间有贡献,根据这点,假设左边界为i,右边界为j,则贡献为i * (n - j + 1)。根据这个思路,我们枚举右边界j,来计算有多少符合的左边界i来计算 展开全文
头像 精神病科黄主任
发表于 2020-07-02 17:34:57
题意:求所有子区间的逆序数对的个数。思路:考虑贡献。假设存在逆序数对(a[i],a[j] (i<j)那么含有a[i]的区间的左边界L<=i,含有a[j]的区间的右边界R>=j。也就是逆序数对贡献的个数为i*(n-j+1)。我们可以枚举j,统计在j前面,有多少个数比a[j]大,计算他 展开全文