D. Inversion Value of a Permutation edu div2

news/2025/10/7 0:50:24/文章来源:https://www.cnblogs.com/Reisentyan/p/19128081

题意:给出一个排列,其逆序值为:包含至少一个逆序对的子区间数量

给出n和k,要求构造一个长度为n的,逆序值为k的排列

很显然,如果一个排列内,若是有两个位置逆序,那么以这两个位置为起点,找到的所有子区间可能会重复
我们应当考虑最基本的事情:长度为n的排列,逆序值最大为多少?
很显然,倒过来排列为最大值,因此逆序值最大为:\(n*(n-1)/2\)

面对这种排列题,直接找式子来解,十分麻烦!
我们需要惯用一点的解法:
假设n=5,先建一个排列
5 4 3 2 1,此时值为10

对换一下最后两个:
5 4 3 1 2,发现值为9

再对换一下:
5 4 1 2 3,发现值变成7了
我们发现,第一次对换,只影响了第4,5个位置,减少了1的值
第二次对换影响第3,4,5个位置,减少了3的值
\(n=2\)时,逆序值最大为1
\(n=3\)时,逆序值最大为3
是不是有巧合?

再建一个排列
5 3 4 1 2,值为8
于是答案就显而易见了!

对于一个长度为\(n\)的排列,里面如果有长度为m的顺序块,那么其逆序值为:n的最大值 - m的最大值
有几块顺序块就减多少个

于是我们先判断,对于长度n的序列,构建逆序值为k的序列需要减去多少
\(n*(n-1)/2-k\),以这个值为目标,去找
当然,你需要一个背包来判断这个值是否达到
代码:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
#define ffp(x,y,z) for(ll (x) = (y);(x)<=(z);(x++))
#define ffs(x,y,z) for(ll (x) = (y);(x)>=(z);(x--))
#define ll long long int
#define q_ (qd())
const double ex = 1e-7;
const int iINF = 0x3f3f3f3f;
long long int qd() {long long w = 1, c, ret;while ((c = getchar()) > '9' || c < '0')w = (c == '-' ? -1 : 1); ret = c - '0';while ((c = getchar()) >= '0' && c <= '9')ret = ret * 10 + c - '0';return ret * w;
}int va[50];
int dp[5000];
int tdp[5000];
int nowsum[5000];void solve()
{int n = q_;int k = q_;vector<int>num(n + 2, 0);if (k > va[n]){cout << 0 << endl;return;}vector<int>ans;int vim = va[n] - k;//目标减少几个if (nowsum[vim] > n){cout << 0 << endl;return;}while (vim){ans.push_back(dp[vim]);vim = tdp[vim];}int p = n;for (auto e : ans){for (int i = p - e + 1 ; i <= p; i++){cout << i << ' ';}p = p - e;}if (p){for (int i = p; i > 0; i--){cout << i << ' ';}}cout << endl;return;
}int main()
{ffp(i, 1, 40){va[i] = i * (i - 1) / 2;}//组成i最少需要几个for (int i = 0; i <= 450; i++){nowsum[i] = iINF;dp[i] = iINF;}dp[0] = 0;nowsum[0] = 0;for (int i = 2; i <= 30; i++){for (int j = 0; j <= 440; j++){if (nowsum[j + va[i]] > nowsum[j] + i){dp[j + va[i]] = i;tdp[j + va[i]] = j;nowsum[j + va[i]] = nowsum[j] + i;}}}int t = q_;while (t--){solve();}return 0;
}/*
⡀⠎⠀⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⣄⠃⠈⣶⡛⠿⠭⣉⠛⠿⡿⠛⠉⣀⣠⣤⣭⡏⠴⢀⣴⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠙⣿⣿
⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣷⣱⣬⠛⠉⠀⠀⢠⠀⠀⠀⢀⣀⠀⠉⠿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠈⡿
⠀⠀⠀⠀⠀⠀⠀⢀⢿⣿⣿⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⡏⠀⠀⠀⠀⠈⠳⠀⠀⠀⠻⣿⣿⣿⣿⣿⣿⠋⠀⣇⠀⠀⠀⠀⠀⠀⠀⠀⠈
⠀⠀⠀⠀⠀⠀⠀⣸⠀⣿⣿⣿⣿⠟⠀⠀⠀⠂⠀⠀⢠⠀⠀⠀⠀⠀⠀⠀⠈⡀⠀⠀⠀⠻⣿⣿⣿⣿⣷⡀⠘
⠀⠀⠀⠀⠀⠀⠀⣧⣿⣿⣿⣿⠋⠀⠀⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿⣄⣧
⠀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⣾⠀⠀⠀⠀⠀⠀⠀⠀⠀⢧⠀⠀⠀⠀⠈⢿⣿⣿⣿⣿⣿⣆
⠀⠀⠀⠀⠀⢀⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⢂⠻⣿⣿⣿⣿⣿⣄
⠀⠀⠀⠀⠀⣿⣿⣿⣿⣹⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣇⠀⠀⠀⠀⠀⡄⠈⢿⣿⣿⣿⣿⣆
⠀⠀⠀⠀⣿⣿⣿⣿⠁⡇⠀⠀⠀⠀⠀⢸⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠀⠀⠀⠐⠸⠀⠀⠻⣿⣿⣿⣆⢦
⠀⠀⢠⣿⣿⣿⣿⠃⠀⠀⠀⠀⠀⠀⠀⣼⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡏⣧⠀⠀⠀⠀⠐⣇⠀⠀⠙⣿⣿⣿⡄⠙⣄
⠀⣴⣿⣿⣿⣿⠏⠀⢸⠀⠀⠀⠀⠀⠀⡿⢿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣃⣈⣦⠀⠀⠀⠀⢹⠀⠀⠀⠸⣿⣿⣿⠀⠀⠳⣀
⠋⣸⣿⣿⣿⡟⠀⠀⠀⡆⠀⠀⠀⠀⠀⡏⠙⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⠀⢠⠀⠀⠀⢧⠀⠀⠀⠀⡇⠀⠀⠀⠘⣿⣿⣷⠀⠀⠘
⠀⣿⣿⣿⢩⠀⠀⠀⠀⣿⠀⠀⠀⠀⠀⣀⠀⢱⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⣿⠀⠂⢀⣴⣶⣿⣿⡀⠀⠀⢻⠀⠀⠀⠀⠹⣿⣿⡄
⢸⣿⣿⠃⠈⠀⠀⢸⠀⣿⣆⠀⠀⠀⠀⣿⣿⣿⠷⠘⡀⠀⠀⠀⠀⠀⠀⢠⢹⡀⠈⡿⠻⣿⣛⢿⣿⣷⡀⠈⠀⠀⠀⠀⠀⢻⣿⣿
⣿⣿⣿⠀⠀⠀⠀⢸⠀⡇⣼⣄⠀⠀⠀⢻⣿⡄⠑⠑⣿⡀⠀⠀⠀⢀⠀⠂⠇⠀⠀⠖⠛⢿⣿⣿⣌⢿⣿⣿⡆⠀⠀⠀⠀⠀⣿⣿⡀
⣿⣿⡇⠀⠀⠀⠀⢸⠀⣾⣿⣿⡷⠿⣷⣤⣿⣿⡄⠀⠀⠀⠑⠤⡀⠀⠃⠀⠀⠀⠀⣿⣶⣿⣿⣿⣿⣆⠙⣿⣧⠀⠀⠀⠀⠀⣿⣿⡇
⣿⣿⠁⠀⠀⠀⠀⠘⣾⣿⣿⠁⣴⣿⣿⣿⣿⣿⣇⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠸⡏⠙⣿⠉⠻⣿⠀⠀⣿⠀⠀⠀⣄⠀⣿⢸⣷
⣿⣿⡇⠀⠀⠀⠀⠀⣿⣿⠁⠀⣿⣿⠋⣿⠏⠙⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⠀⢀⢻⠀⠀⢀⡟⢀⣿⣸⢃⠟
⣿⣿⣿⠀⡄⠀⠀⠀⠘⠻⡄⠀⢹⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡘⠀⢀⣿⠃⣿⣿⡗⠁
⣧⣿⣿⣧⢹⡀⠀⠀⠀⠱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⣴⣿⣿⣾⣿⣿⣿
⢿⠘⣿⣿⣿⣿⣤⠀⠢⡀⠱⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣵⣿⣿⣿⣿⣿⣿⣿⣿⣷
⠀⠉⣿⣿⣿⡿⣿⠻⣷⣬⣓⣬⣄⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠉⠈⠈⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⠃⠼⢉⣿⣿⣿⣿⣿⣿⣿
⠀⠀⣿⣿⣿⣷⠀⠀⠀⠘⣿⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⡏⠀⠀⢸⠀⢻⢿⣿⣿⡏⣿
⠀⢸⣿⣿⣿⣿⠀⠀⠀⠀⢻⣿⣿⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣴⣾⣿⣿⣿⣿⠀⠀⠀⢸⠀⠀⢸⣿⣿⠘⡀
⢦⡿⣿⣿⣿⢿⠀⠀⠀⠀⢸⣿⣿⣿⣿⣿⣿⣿⣶⣶⣦⡄⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠘⡄⠀⠈⣿⣿⡄⠱
⣴⠛⣾⣿⣿⢸⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⡄⠀⠀⠀⠀⠀⠀⠀⣯⠛⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⣇⠀⠀⣿⣿⣿
⠿⠀⣿⣿⣿⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⣿⣿⣿⣿⠟⠰⡾⠃⠀⠀⠀⠀⠀⠀⠀⠙⡟⠀⢻⣿⣿⣿⣿⣿⡆⠀⠀⠀⠸⠀⠀⠸⣿⣿⣷
⠆⢳⣿⣿⡇⠀⠀⠀⠀⠀⠀⣿⣿⣿⠛⠿⠿⢿⡟⠀⠀⠉⠦⣀⡤⢶⠀⠖⠲⠶⠊⠀⠀⠀⢻⡛⠛⠛⣿⣿⠀⠀⠀⠀⠃⠀⠀⢿⣿⣿
*/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mineserver

Mineserverhttps://github.com/CoolManBob/mineserver 项目简介(根据 README)名称:Mineserver用途:一个 Minecraft Alpha(早期版 Minecraft) 的 自定义服务器软件,用 C++ 编写,支持 Windows 和 Linux 平台。Gi…

首钢建设二公司网站博客网站开发背景及作用

之前的表单验证都是用js写的&#xff0c;这里也可以使用tp框架的验证。但是两者比较而言还是js验证比较好&#xff0c;因为tp框架验证会运行后台代码&#xff0c;这样运行速度和效率就会下降。  自动验证是ThinkPHP模型层提供的一种数据验证方法&#xff0c;可以在使用create创…

个人博客公告

由于github部署的网站维护稍微有点繁琐(有点懒了更新了) 原来的域名gannia.top 已经到期了暂时还没有续费的打算(指香港云服务器不清楚怎么推掉域名,想要更换阿里云域名的) 目前暂时还是用着原来的域名 https://t…

一个刚大一的普通大学生

title: 一个刚大一的普通大学生 tags: [] categories:生活 author: Tokepson date: 2025-05-01 00:32:00关于我 一名正在山东上大学的普通大学生(虽然说是在上海成长的。。。) 在多次了解到个人网站领域的信息后,出…

通过利用百度对于外链的检测算法上的缺陷

友情链接欺骗,通过利用百度对于外链的检测算法上的缺陷,可以实现自己的网站所有对外的链接,被判定为“不是站长真正的去推荐”的外链,让百度自动过滤掉这类链接的计算分值。 第四种:快速排名,目前快速排名技术有…

用django做网站网站seo关键词排名推广

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

网站建设 我们是专业的网页制作的模块命名规范

描述 从日志中读取数据时&#xff0c;有一条数据不符合规范&#xff0c;导致logstash读取数据插入时出错&#xff0c;而插件又无限尝试插入&#xff0c;导致堵塞。 解决方案 找到logstash文件夹目录&#xff0c;例如是&#xff1a;/data/logstash-7.3.2 cd /data/logstash-…

网站开发报告参考文献wordpress 没有样式表

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

Discord

DiscordDiscord 本质上是一个 免费语音、视频、文字社群软件,最早是为游戏玩家设计的,后来扩展成面向各种社区。 主要特点:语音/视频/文字聊天:实时语音频道、群聊、私聊。服务器(Server)+频道(Channel) 组织形…

网络上做假网站做物流安卓app开发环境

对拉索回归进行调参主要涉及确定最佳的正则化参数 λ。正则化参数 λ 控制着模型对系数的收缩程度&#xff0c;影响着模型的复杂度。选择合适的 λ 值既可以防止过拟合&#xff0c;也可以保证模型有足够的预测能力。 以下是进行拉索回归调参的一般步骤&#xff1a; 准备数据&a…

wordpress网站有支付功能吗公司网站是用什么软件做

[css] 你有用过弹性布局吗&#xff1f;说说你对它的理解 按我的经验在样式规律上大致分下类吧&#xff0c;等宽弹性布局单元素弹性布局多元素定比弹性布局等隙布局用 flex 或 grid 能非常轻松的完成以上效果&#xff0c;而 css2 时代多半还需要更多元素嵌套才能完成了。所谓弹…

git常用助记

基础 添加配置 git config [--local | --global | --system] user.name Your name git config [--local | --global | --system] user.email Your emaillocal 仓库级 2. global 用户级 3. system 系统级查看配置 git …

网站营销成功的案例分析加速游戏流畅的软件

dataloader中通常使用num_workers来指定多线程来进行数据的读取。可以使用共享内存进行加速。 代码地址&#xff1a;https://github.com/POSTECH-CVLab/point-transformer/blob/master/util/s3dis.py 文章目录 1. 共享内存和dataloader结合1.1 在init中把所有的data存储到共享内…

网站代码开发方式网站关键字多少个

目录 数组的定义和使用&#xff1a; 数组的初始化&#xff1a; 遍历数组&#xff1a; 数组是引用类型 初始JVM的内存分布 再读引用变量 认识null 数组的应用场景 作为函数的参数 作为函数的返回值 数组练习 数组转字符串 排序 冒泡排序 数组逆序 数组求平均…

云岚到家项目文字稿

各位面试官好,特别荣幸能跟您详细聊我参与的云岚到家项目 —— 这是个家政服务 O2O 平台,核心是把个人服务人员和家政公司的资源整合起来,用户通过线上预约就能享受上门服务。项目分四个端:用户端小程序、服务端 A…

做网站需要具备什么德阳做网站公司

General Purpose Input Output 通用输入输出口(俗称IO口) 1.可配置为8种输入输出模式 模式名称性质特征浮空输入 数字输入 可读取引脚电平&#xff0c;若引脚悬空&#xff0c;则电平不确定上拉输入数字输入可读取引脚电平&#xff0c;内部连接上拉电阻&#xff0c;悬空时默认…

软件工程 第一次作业

第一次软件工程作业 随笔这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546/这…

制作网站后台汕头e京网

编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 #include <iostream> #include <vector> #include <string>using namespace std;string longestCommonPrefix(vector<string>& strs) {if (…

重庆做网站人才免费办公模板网站有哪些

引言 rpm 是一种用于互联网下载的打包及安装工具&#xff0c;它包含在某些 Linux 发行版中&#xff0c;生成具有 .rpm 扩展名的文件。rpm 是 redhat package manager&#xff08;RedHat 软件包管理器&#xff09;的缩写&#xff0c;类似 Windows 下的 setup.exe 文件。这一文件…

软工第一次团队作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/202501SoftwareEngineering/homework/13546这个作业的目标 完成团队的G…