3193. 统计逆序对的数目

3193. 统计逆序对的数目


题目链接:3193. 统计逆序对的数目

代码如下:

class Solution 
{
public:
	int numberOfPermutations(int n, vector<vector<int>>& requirements) 
	{
		vector<int> req(n, -1);
		req[0] = 0;
		for (auto& p : requirements)
		{
			req[p[0]] = p[1];
		}
		if (req[0])
		{
			return 0;
		}

		int m = ranges::max(req);
		vector<vector<int>> memo(n, vector<int>(m + 1, -1));//-1表示没有计算过
		auto dfs = [&](auto&& dfs, int i, int j)->int
			{
				if (i == 0)
				{
					return 1;
				}
				int& res = memo[i][j];//注意这里是引用
				if (res != -1)//之前计算过
				{
					return res;
				}
				res = 0;
				if (int r = req[i - 1]; r >= 0)
				{
					if (j >= r && j - i <= r)
					{
						res = dfs(dfs, i - 1, r);
					}
				}
				else
				{
					for (int k = 0; k <= min(i, j); k++)
					{
						res=(res+dfs(dfs,i-1,j-k))%MOD;
					}
				}
				return res;
			};
		return dfs(dfs, n - 1, req[n - 1]);
	}

private:
	const int MOD = 1'000'000'007;
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/911299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HFSS 3D Layout中Design setting各个选项的解释

从HFSS 3D LAYOUT菜单中&#xff0c;选择Design Settings打开窗口&#xff0c;会有六个选项&#xff1a;DC Extrapolation, Nexxim Options, Export S Parameters, Lossy Dielectrics, HFSS Meshing Method, and HFSS Adaptive Mesh. DC Extrapolation 直流外推 直流外推分为标…

【板栗糖GIS】——如果安装的vscode版本落后了,如何无障碍更新

【板栗糖GIS】——如果安装的vscode版本落后了&#xff0c;如何无障碍更新 今天想安装新扩展插件时发现vscode版本有点旧&#xff0c;于是在不影响插件的情况下更新。 打开vscode软件&#xff0c;点击设置检查更新&#xff0c;如果有需要更新的直接安装到原目录&#xff0c;如…

数字化转型必看!华为数字化最全合集(192页PDF限免下载 )

今天给大家整理了6份关于华为数字化的资料&#xff0c;共计192页&#xff0c;干货满满&#xff01; 资料已经全部打包&#xff0c;划到文末添加大师兄即可免费下载&#x1f447;&#x1f447;&#x1f447; 一、华为实施数字化转型方法论与实践的业务解读 这份报告是华为实施数…

【数据集】【YOLO】【目标检测】道路结冰数据集 1527 张,YOLO目标检测实战训练教程!

数据集介绍 【数据集】道路结冰数据集 1527 张&#xff0c;目标检测&#xff0c;包含YOLO/VOC格式标注。数据集中包含2种分类&#xff1a;“clear_road, ice_road”。数据集来自国内外图片网站和视频截图&#xff0c;部分数据经过数据增强处理。检测范围监控视角检测、无人机视…

创建线程时传递参数给线程

在C中&#xff0c;可以使用 std::thread 来创建和管理线程&#xff0c;同时可以通过几种方式将参数传递给线程函数。这些方法包括使用值传递、引用传递和指针传递。下面将对这些方法进行详细讲解并给出相应的代码示例。 1. 值传递参数 当你创建线程并希望传递参数时&#xff…

集智书童 | DuoDiff: 提升浅层 Transformer 性能的扩散模型, 双 Backbone 件扩散模型在图像处理中的应用 !

本文来源公众号“集智书童”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;DuoDiff: 提升浅层 Transformer 性能的扩散模型&#xff0c; 双 Backbone 件扩散模型在图像处理中的应用 &#xff01; 扩散模型在图像生成方面取得了前所…

linux perf 环境部署和基本测试(基于Ubuntu20.04)

1,linux 安装perf sudo apt-ge install linux-tools-common sudo apt-get install linux-tools-$(uname -r) linux-tools-generic -y 2 补充安装 sudo apt-get install python3-q-text-as-data 3&#xff0c;perf常用命令 larkubuntu:~$ perf usage: perf [--version] [--hel…

PHP露营地管理平台小程序系统源码

⛺️【露营新风尚】露营地管理平台系统全攻略⛺️ &#x1f3d5;️一、露营热潮下的管理难题&#xff1a;如何高效运营露营地&#xff1f;&#x1f914; 随着露营文化的兴起&#xff0c;越来越多的人选择在大自然中享受宁静与自由。然而&#xff0c;露营地的管理却面临着诸多…

信息安全工程师(83)Windows操作系统安全分析与防护

一、Windows操作系统安全分析 系统漏洞&#xff1a; Windows操作系统由于其复杂性和广泛使用&#xff0c;可能存在一些已知或未知的漏洞。这些漏洞可能会被黑客利用&#xff0c;进行恶意攻击。微软会定期发布系统更新和补丁&#xff0c;以修复这些漏洞&#xff0c;提高系统的安…

软件测试—功能测试详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、测试项目启动与研读需求文档 &#xff08;一&#xff09; 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产…

【1个月速成Java】基于Android平台开发个人记账app学习日记——第7天,申请阿里云SMS短信服务SDK

系列专栏链接如下&#xff0c;方便跟进&#xff1a; https://blog.csdn.net/weixin_62588253/category_12821860.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12821860&sharereferPC&sharesourceweixin_62588253&sharefromfrom_link 同时篇幅…

安装和运行开发微信小程序

下载HBuilder uniapp官网 uni-app官网 微信开发者工具 安装 微信小程序 微信小程序 官网 微信小程序 配置 运行 注意&#xff1a;运行前需要开启服务端口 如果运行看不到效果&#xff0c;设置下基础库选别的版本 配置

如何用pycharm连接sagemath?

#世纪难题在我逃避刷CTF的这两天解决了# 1. 在本地linux上部署最新版的sagemath 推荐WSLdocker直接pull sagemath 2. pycharm中创建jupyter脚本&#xff0c;远程连接jupyter服务器 3. 运行cell并配置kernel 缺点&#xff1a;pycharm用自带的python编译器预处理代码&#xff0…

JNPF V5.1版本震撼上线,更多功能等你解锁!

亲爱的用户们&#xff1a; 随着季节的更迭&#xff0c;引迈也在不断进步和创新。经过数月的精心打磨和无数次的测试&#xff0c;我们非常兴奋地宣布&#xff0c;JNPF快速开发平台迎来了激动人心的V5.1版本更新&#xff01;这次更新不仅带来了全新的功能和改进&#xff0c;还进…

Dependency: androidx.webkit:webkit:1.11.0-alpha02. 问题

android studio 打包后出现这个问题 1.步骤更新topOn sdk 添加 //Admob api “com.anythink.sdk:adapter-admob:6.4.18” api “com.google.android.gms:play-services-ads:23.4.0” api "com.google.android.gms:play-services-ads:23.4.0"sdk 中会出现打包编译报错…

express 使用JWT认证

1、JWT的理解 JWT 的组成部分: 分别是 Header(头部)、Payload(有效荷载)、Signature(签名) 三者之间使用英文的"."分隔, Pyload 部分才是真正的用户信息,他是用户信息经过加密之后生成的字符串 Header 和 Signature 是 安全性相关的部分&#xff0c;只是为了保证 Tok…

【数据结构】LRUCache和跳表{简单讲解+模拟实现}

文章目录 LRUCacheSkipList LRUCache LRU是Least Recently Used的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c;选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段&#xff0c;用来记录一个页面自上次被访问以来所经历的…

第一个纯血鸿蒙应用(Napi开发-ArtTS调用C/C++)

1.行业背景 纯血鸿蒙&#xff0c;即鸿蒙Next版已于2014年1月正式发版&#xff0c;鸿蒙生态设备数量已经突破10亿台&#xff0c;已经有超过15000个应用和元服务上架。鸿蒙生态不只是移动设备这么简单&#xff0c;他打造的是一个18n的全场景战略&#xff0c;真正做到了“万物互联…

【从零开始的LeetCode-算法】3255. 长度为 K 的子数组的能量值 II

给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为&#xff1a; 如果 所有 元素都是依次 连续 且 上升 的&#xff0c;那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n - …

【Linux】进程创建/等待/替换相关知识详细梳理

1. 进程创建 1.1 fork函数 概念&#xff1a;fork函数为系统调用接口&#xff0c;用于从已存在的进程中&#xff0c;创建一个新的进程。新进程为子进程&#xff0c;原来的进程为父进程。 用法&#xff1a; #include <unistd.h> pid_t fork(void); // 返回值&…