洛谷P5463 小鱼比可爱(加强版) 题解
写博客不易,来玩会?
这道题我和dalao们的做法略有不同,我用的是归并排序做法qwq
归并排序求逆序对大家应该很清楚了,我这里就来讲讲如何用归并排序求出这道题的答案
让我们先观察一下规律
举个栗子,若存在一组逆序对a[3],a[4],n = 5,则这组逆序对存在于以下区间内:[ 1 , 4 ] , [ 1 , 5 ] , [ 2 , 4 ] , [ 2 , 5 ] , [ 3 , 4 ] , [ 3 , 5 ],共6个。我们可以画个图帮助理解:

将其推广,若有逆序对a[ l ] , a[ r ],如图所示:

则包含其的区间数,即该区间对答案的贡献为(l + 1 - 1) * (n - r + 1 ) = l * (n-r+1)。
然后再用归并排序即可。
注意两个点:
1.本题要用一个类似前缀和的变量来记录所有左半边的位置之和,搜到的时候再从\(sum\)中减去,否则会T(至少我T了)
2.会爆精度。记得开__int 128或者打高精(反正我开的__int 128 qwq)
code:
// Author : Kasugano_Sora
#include<bits/stdc++.h>
using namespace std;
struct item
{
int pl , val;
} a[1100000] , b[1100000];
int n;
__int128 ans;
inline __int128 read()
{
__int128 x = 0 , f = 1;
char ch = getchar();
while(ch < '0' || ch > '9')
{
if(ch == '-')
f = -1;
ch = getchar();
}
while(ch >= '0' && ch <= '9')
{
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
inline void print( __int128 x ) //int 128必备操作
{
if(x < 0)
{
putchar('-');
x = -x;
}
if(x > 9)
print(x / 10);
putchar(x % 10 + '0');
}
void msort( int l , int r )
{
if(l == r)
return ;
int mid = (l + r) >> 1;
msort(l , mid);
msort(mid + 1 , r);
long long sum = 0LL; //所谓的前缀
for(int i = l ; i <= mid ; i++ )
{
sum += 1ll * a[i].pl;
}
int i = l , j = mid + 1 , k = l;
while(1) //归并
{
if(i > mid || j > r)
break;
if(a[i].val <= a[j].val)
sum -= 1ll * a[i].pl , b[k++] = a[i++];
else
{
ans += sum * 1ll * (n - a[j].pl + 1);
b[k++] = a[j++];
}
}
if(i > mid) for( ; j <= r ; j++ , k++ )
{
b[k] = a[j];
}
else for( ; i <= mid ; i++ , k++ )
{
b[k] = a[i];
}
for(int i = l ; i <= r ; i++ )
{
a[i] = b[i];
}
return ;
}
int main()
{
// freopen("1.txt" , "r" , stdin);
cin >> n;
for(int i = 1 ; i <= n ; i++ )
{
scanf("%d" , &a[i].val);
a[i].pl = i;
}
msort(1 , n);
print(ans);
return 0;
}
洛谷P5463 小鱼比可爱(加强版) 题解的更多相关文章
- Java实现洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- 洛谷 P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然 ...
- 洛谷P1428 小鱼比可爱
题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个"比可爱"比赛,比的是每只鱼的可爱程度.参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只 ...
- 洛谷——P1428 小鱼比可爱
https://www.luogu.org/problem/show?pid=1428 题目描述 人比人,气死人:鱼比鱼,难死鱼.小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度.参赛的鱼被从 ...
- 洛谷P1427 小鱼的数字游戏 题解 递归入门题
题目链接:https://www.luogu.com.cn/problem/P1427 题目大意: 给你一串数(输入到0为止),倒序输出这些数. 解题思路: 首先这道题目可以用数组存数据,然后输出. ...
- 洛谷P1854 花店橱窗布置 分析+题解代码
洛谷P1854 花店橱窗布置 分析+题解代码 蒟蒻的第一道提高+/省选-,纪念一下. 题目描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定 ...
- HAOI2006 (洛谷P2341)受欢迎的牛 题解
HAOI2006 (洛谷P2341)受欢迎的牛 题解 题目描述 友情链接原题 每头奶牛都梦想成为牛棚里的明星.被所有奶牛喜欢的奶牛就是一头明星奶牛.所有奶 牛都是自恋狂,每头奶牛总是喜欢自己的.奶牛之 ...
- 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...
- 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)
洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...
随机推荐
- 七、.net core(.NET 6)使用Serilog进行配置和实现日志记录
使用Serilog来实现日志记录 先安装Serilog六件套神装包: 也可以对个别相应的包进行删除等,都是可以的.例如,标注的1是读取配置文件的,如果不需要通过配置文件进行操作,就可以使用这个包.2是 ...
- Socks协议以及代理转发工具分析
前言:最近两场HW都和某师傅学到了挺多东西,算是对内网不出网以及流量代理做个分析(SOCKS协议,reGeorg原理分析,frp的代理,CS上的代理 SOCKS SOCKS(Socks:Protoco ...
- openresty 学习笔记小结:综合应用实例
openresty 学习笔记小结:综合应用实例 这个综合实验实现的功能其实很简单,用户访问一个页面,显示一个默认页面.输入参数(post或者get都可以),如果参数在数据库查询得到并满足一定条件,根据 ...
- publicPath路径问题
output: { filename: "[name].js", path:path.resolve(__dirname,"build") } 如果没有指定pu ...
- ALD和CVD晶体管薄膜技术
ALD和CVD晶体管薄膜技术 现代微处理器内的晶体管非常微小,晶体管中的一些关键薄膜层甚至只有几个原子的厚度,光是英文句点的大小就够容纳一百万个晶体管还绰绰有余.ALD 是使这些极细微结构越来越普遍的 ...
- GPU上稀疏矩阵的基本线性代数
GPU上稀疏矩阵的基本线性代数 cuSPARSE库为稀疏矩阵提供了GPU加速的基本线性代数子例程,这些子例程的执行速度明显快于仅CPU替代方法.提供了可用于构建GPU加速求解器的功能.cuSPARSE ...
- MindSpore 高阶优化器
MindSpore 高阶优化器 MindSpore自研优化器THOR(Trace-based Hardware-driven layer-ORiented Natural Gradient Desce ...
- NSight Compute 用户手册(下)
主菜单 文件 新建项目使用"新建项目"对话框创建新的分析项目 4. Main Menu and Toolbar Information on the main menu and t ...
- JDBC连接MongoDB
pom文件中导入驱动 <!-- MongoDB驱动 --> <dependency> <groupId>org.mongodb</groupId> &l ...
- 从实力的角度出发来思考这道AOP题目
文/楠木大叔 技术更迭,一往无前.技术人总是要不断学习以适应社会的发展和行业对我们的要求.每隔一段时间,就会有纷至沓来的新技术,新知识,新概念,我们应该如何应对,是被逼到墙角,还是主动出击? 导读 从 ...