【洛谷P4280】逆序对

从零到一:鲲鹏920服务器上的DeepSeek模型部署全流程解析 本文详细解析了在华为鲲鹏920服务器上部署DeepSeek模型的全流程,包括环境准备、模型服务框架部署、性能优化及生产环境方案。通过ARM架构优化和量化技术,显著提升模型推理效率,适用于企业级AI应用场景,助力国产化技术落地。 阅读详情

题目

题目链接:https://www.luogu.com.cn/problem/P4280
暑假到了,小可可和伙伴们来到海边度假,距离海滩不远的地方有个小岛,叫做欢乐岛,整个岛是一个大游乐园,里面有很多很好玩的益智游戏。碰巧岛上正在举行“解谜题赢取免费门票”的活动,只要猜出来迷题,那么小可可和他的朋友就能在欢乐岛上免费游玩两天。
迷题是这样的:给出一串全部是正整数的数字,这些正整数都在一个范围内选取,谁能最快求出这串数字中“逆序对”的个数,那么大奖就是他的啦!
当然、主办方不可能就这么简单的让迷题被解开,数字串都是被处理过的,一部分数字被故意隐藏起来,这些数字均用-1来代替,想要获得大奖就必须求出被处理的数字串中最少能有多少个逆序对。小可可很想获得免费游玩游乐园的机会,你能帮助他吗?
注:“逆序对”就是如果有两个数A和B,A在B左边且A大于B,我们就称这两个数为一个“逆序对”,例如:4 2 1 3 3里面包含了5个逆序对:(4, 2)、(4, 1)、(4, 3)、(4, 3)、(2, 1)。
n≤10000,m≤100n\leq 10000,m\leq 100n≤10000,m≤100。

思路

不难发现填进去的数一定是单调不减的,手画分类讨论一下就可以得出。
然后就是一道裸的 dp 了。设 fi,jf_{i,j}fi,j​ 表示前 iii 个位置,最后一个填的是 jjj 的最小逆序对数。注意这里只计算填入的数产生的逆序对数量,已经有的数可以直接计算出来最后加上。
预处理 g0/1,i,jg_{0/1,i,j}g0/1,i,j​ 表示前缀不小于 jjj 的数字数量,以及后缀不大于 jjj 的数字数量。然后转移就直接随便写写就行了。
时间复杂度 O(nm)O(nm)O(nm)。

代码

#include <bits/stdc++.h>
using namespace std;

const int N=10010,M=110,Inf=1e9;
int n,m,cnt,a[N],f[N][M],g[2][N][M];

int main()
{
	scanf("%d%d",&n,&m);
	memset(f,0x3f3f3f3f,sizeof(f));
	f[0][1]=0;
	for (int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			g[0][i][j]=g[0][i-1][j]+(a[i]>=j)*(a[i]!=-1);
	for (int i=n;i>=1;i--)
		for (int j=1;j<=m;j++)
			g[1][i][j]=g[1][i+1][j]+(a[i]<=j)*(a[i]!=-1);
	for (int i=1;i<=n;i++)
	{
		if (a[i]!=-1)
		{
			memcpy(f[i],f[i-1],sizeof(f[i]));
			cnt+=g[0][i-1][a[i]+1];
		}
		else
		{
			int minn=Inf;
			for (int j=1;j<=m;j++)
			{
				minn=min(minn,f[i-1][j]);
				f[i][j]=minn+g[0][i-1][j+1]+g[1][i+1][j-1];
			}
		}
	}
	int ans=Inf;
	for (int i=1;i<=m;i++)
		ans=min(ans,f[n][i]);
	printf("%d",ans+cnt);
	return 0;
}
vue2/3 - element表格组件el-table实现懒加载树型(上下级)数据、默认展开和隐藏层级,支持对表格进行修改|新增|删除,解决完成操作后树节点不刷新问题(提供示例代码,一键复制开箱即用 vue2,vue3,elementui,elementPlus,el-table,Table表格组件,表格懒加载数据,element table表格数中的树形结构懒加载,增加后数据不同步更新问题,el-table树形与el-tree树形结构的一键折叠与展开,elementui中el-tree懒加载数据 默认展开最外层节点,Element-plus Table组件树表结构默认展开一级目录,vue实现element table表格树形结构-使用懒加载时-解决子节点增删改后,不刷新子节点数据问题,解决el-tre 阅读详情

相关推荐

大样本EEG公共数据集汇总

描述: OpenNeuro平台包含多个认知障碍相关的EEG数据集,例如针对轻度认知障碍(MCI)或阿尔茨海默病(AD)的研究。描述: 天普大学医院EEG语料库包含大量临床EEG记录,可通过元数据筛选出与认知障碍相关的片段(如诊断标签包含dementia或MCI)。描述: ADNI主要提供多模态神经影像数据(MRI/PET),但部分合作研究整合了EEG数据。样本量: 部分数据集包含100+被试(例如结合MRI与EEG的多模态数据)。样本量:30,000+ EEG记录(持续更新,全球最大临床EEG数据库)。

谁人打的太极拳的博客 1762

洛谷 逆序对(归并排序|树状数组)

题目链接: 逆序对 - 洛谷 leetcode也有原题,考虑到leetcode题解写的好,也贴个链接:力扣 -数组中的逆序对 思路: 在归并排序中,除了数组最左边的元素,其他元素都有机会出现在将要合成的两个数组的右半边数组中,在“并”的过程中,需要逐个比较左右两个数组的数字,在这个比较的过程,可以顺便计算逆序数数量。 举个栗子,左半边数组是1 6 8 9,右半边是1 3 4 5,i是左数组,指针,j是右数组指针。 当 i 指向6,j 指向3的时候,要把3放进数组对吧,但是在这之前我们加一步.

bunny_1024的博客 1544

Unity Android构建报错:compileSdk 35兼容性五层定位法

Android构建中的compileSdk是编译时API目标版本,其升级并非孤立操作,而是触发JDK、Android Gradle Plugin(AGP)、NDK、targetSdk与Unity引擎版本之间强耦合校验的起点。当出现'using a newer Android Gradle plugin to use compileSdk = 35'类报错,本质是代际技术栈错配——例如AGP 7.1.3不识别compileSdk 35所需Java 17语法,或NDK 21与AGP 7.4的ABI规范冲突。该问

weixin_32496547的博客 569

洛谷 P2513 ——逆序对数列

题目描述 对于一个数列 {ai}\{a_i\}{ai​},如果有 i<ji<ji<j 且 ai>aja_i>a_jai​>aj​,那么我们称 aia_iai​ 与 aja_jaj​ ​ 为一对逆序对数。 若对于任意一个由 1∼n1∼n1∼n 自然数组成的数列,可以很容易求出有多少个逆序对数。 那么逆序对数为 k 的这样自然数数列到底有多少个? 输入格式 第一行为两个整数 n,kn,kn,k。 输出格式 写入一个整数,表示符合条件的数列个数,由于这个数可能很大,你只需输出

六级不考550+不改名 1074

用户视角下的vfsglobal预约困境:从注册到登录的全流程避坑指南

本文详细解析了vfsglobal签证预约系统从注册到登录的全流程操作,帮助用户避开常见技术陷阱。针对IP限制、DNS解析、浏览器缓存等登录障碍提供实用解决方案,并揭示账号管理的隐藏规则与支付环节的延时处理技巧,助力用户高效完成签证预约。

ol78901234的博客 871

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py和Pandas库,详细演示了如何高效读取HDF5格式文件、理解数据结构、提取关键特征(如传感器数据与剩余使用寿命RUL),并整合为可用于预测性维护分析的DataFrame,帮助研究者和工程师快速上手这一重要的工业时序数据集。

weixin_29083373的博客 280

洛谷 P1908 逆序对

洛谷 P1908 逆序对。考察高效排序算法(也许

qq_17807067的博客 903

DataGridView 右键菜单复制(公共)

dataGridView1.CellMouseClick += new DataGridViewCellMouseEventHandler( (sender1, e1) => { if (e1.Button == MouseButtons.Right) {

沁心渃水 2832

P1908 逆序对

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai&gt;aj且i&lt;j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。Update:数据已加强。 输入输出格式...

森宝的博客 849

HyperMesh实战:5种复杂载荷场景下的field映射技巧(附TCL脚本)

本文详细介绍了HyperMesh在5种复杂载荷场景下的field映射技巧,包括轴承载荷的圆柱坐标系映射、粉末压力中的切向力处理、实验数据到有限元模型的场映射、多工况载荷的组合映射以及局部细化网格的边界条件传递。通过实战案例和TCL脚本,帮助工程师高效解决有限元分析中的载荷映射难题,提升工作效率。

fanta的博客 294

决策规划算法四:Piecewise Jerk Path Optimizer

一,问题分析 路径规划的本质目的:规划出一条安全(无碰撞),舒适(平滑),符合车辆运动学的轨迹。 如下图所示,决策算法开辟凸空间后,路径规划算法用数值优化的方法搜索出一条最优路径,即将问题转化为二次规划的问题,采用二次规划的求解器进行求解。 二次规划问题的求解顺序: 1,确定优化变量 2,确定目标函数 3,确定约束条件 4,将目标函数和约束条件变形为二次规划的标准形式 5,用二次规划求解器进行求解,获得优化变量的序列,使得目标函数取得最小值。 注:路径的最终表达式为:,..

肥嘟嘟的左卫门 8562

洛谷 4828 Nagisa loves Tomoya 题解

博客观赏效果更佳](https://lightninguz2.github.io/2019/11/02/洛谷-4828-Nagisa-loves-Tomoya-题解/) 题意简述 给定一个序列aaa,长度n<=1e6n<=1e6n<=1e6,以及Q(<=1e4)Q(<=1e4)Q(<=1e4)个询问。定义一次操作如下:对于每个iii,a[i]+=a[i%n+1]...

LightningUZ的博客 328

二、FM1288调试方案-工具软件使用

分析音频数据的软件需要满足以下几点:1、能打开原始pcm音频文件;2、基本的音频播放软件的操作;3、能查看分析音频数据的频率成分;4、能查看分析音频音量幅度;5、能完成基本音频处理:降噪、音量增幅限幅、滤波和均衡;

优快云mianfeixiazai001的博客 1294

P4280 [AHOI2008]逆序对(dp)

https://www.luogu.com.cn/problem/P4280 思考: 直接去dp很难转移。 但是这个题有个结论。填的数一定是满足不严格单调上升序列,不然答案会更差。 不妨设a<b,序列为: a,.....,b,记中间部分为L 原来的逆序对数量为 a在前b在后:count(L,<=a)+count(L,>=b) 交换a,b b在前a在后:count(L,<=b)+count(L,>=a) 其中L内的逆序对数量一样 画出数轴 可以得出a&l

代码笔记本 330

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

洛谷 P4280 [AHOI2008]逆序对 题解(预处理+dp)

题目链接 题目思路 前言 这题目搞了我好久,看了好久的题解才看懂,以后状态不好还是不要写题。题目难度也比较难。但多看几遍就懂了 正文 首先,我们考虑填入的数需要满足的性质。一定是满足不严格单调上升序列 对于两个空位a和b,分别填入数x和y,且x<y。如果我们交换x和y,会有如下性质: 1.[1,a-1]和[b+1,n]中的数与x y构成的逆序对数不变。 2.[a+1,b-1]中大于x或小于y...

hunxuewangzi的博客 276

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

T5Gemma-2 LaTeX OCR微调实战:轻量多模态模型的端到端训练指南

LaTeX OCR 是将数学公式图像精准转为可编译 LaTeX 代码的关键技术,其核心依赖多模态序列到序列(Seq2Seq)建模能力。原理上需协同处理图像 patch embedding 与文本 tokenization,并在 encoder-decoder 架构中实现跨模态对齐。技术价值在于突破传统 OCR 对字体、排版的强假设,支持手写体、低分辨率及嵌套结构公式识别。典型应用场景包括学术论文数字化、教育题库构建与科研笔记自动化。本文聚焦 T5Gemma-2 这一 270M 参数量的轻量级多模态模型,深入

weixin_30435261的博客 692

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

洛谷--逆序对

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。 ...

weixin_30538029的博客 364

洛谷 P1908 逆序对(树状数组+离散化)

题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。 最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中 ai>aja_i>a_jai​>aj​ 且 i<ji<ji<j 的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。注意序列中可能有重复数字。 Update:数据已加强。 输入格式 第一行

Running Snail 493

洛谷 p1908 逆序对 归并排序

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai&amp;amp;amp;amp;gt;aj且i&amp;amp;amp;amp;lt;j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。Update:数据已加强。 输入输...

h1astro的博客 863

洛谷P1908 逆序对

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。Update:数据已加强。 输入输出格式...

卑鄙的我 3329

#归并排序#(洛谷 1908)逆序对

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛谁先算出给定的一段正整数序列中逆序对的数目。 这道题目用了归并排序求逆序对。 #i...

lemondinosaur的博客 383

逆序对

题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i 输入输出格式 输入格式: 第一行,一个数n,表示序列中有n个数。 第二行n个数,表示给定的序列。 输出格式: 给定序列中逆

wzw-yali的博客 638

洛谷 1908 逆序对

//树状数组 #include<bits/stdc++.h> using namespace std; const int maxn = 100010; int n, s, haoyu[maxn], c[maxn];struct node{ int x, site; } a[maxn];bool cmp(node p, node q){ return p.x < q.x; }voi

ToheartZhang的博客 533

洛谷 - 逆序对 (归并排序,分治,树状数组)

题目链接 题目: 思路: 归并排序:时间复杂度稳定在N(logN)。 习惯了用二分排序,很少了解其他的排序,但是事实证明这是错误的。。。。 归并排序用的是分治法,何为分治?分治就是大事化小,小事化不了。。。 归并排序就是不断的把区间分小,直到分到只有一个数的区间,那么我们再比较俩个一个数的区间。 例: 分小的俩个区间 为 6 9 和 7 8,我们比较8和6 7 > 6,那么我们用一个数组记录目前最小的元素c[m++] = 6,然后再判断这个区间中是否还有元素,9 < 7,c[m++] = 7

give it a try 405

P1908 逆序对(洛谷)

原题传送门 思路:这题实在坑,直接暴力法要超时,加个归并排序模板又要注意逆序对的数量如何求出,因为两段都是有序的了,所以前面一段中找到一个比后面中的某个大的时候,前面一段后面所有的数都要比它大了,统计个数就为m-i+1,这是这道题的关键点,然后算法的话就是分治+归并排序,有涉及递归的过程。 代码参考 在这里插入代码片 ...

Bertil的博客 575

P4280 [AHOI2008]逆序对

传送门 有一个不会证明的贪心:从左到右考虑每一个位置,然后在每一个位置都贪心选取能让该位置构成的逆序对最少的数。判断逆序对的话只要记一下前缀小于等于某数的总数和后缀小于等于某数的总数就行了 //minamoto #include<bits/stdc++.h> #define rint register int #define inf 0x3f3f3f3f #define ll long...

weixin_34248705的博客 169
上一篇: 【洛谷P3273】棘手的操作
下一篇: 【CF103D】Time to Raid Cowavans
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值