[NOIP模拟][dp][codevs]p1401逆序对统计

DTOJ 4715. 期望逆序对 题意 有 nnn 个独立的随机变量,其中 xix_ixi​ 的值是一个从 [li,ri][l_i,r_i][li​,ri​] 中随机选取的整数。 你可以将这 nnn 个随机变量重新排列,从而得到一个长度为 nnn 的随机变量序列。 求由随机变量序列生成的序列的逆序对个数的期望的最小值。 对 30%30\%30% 的数据,n≤8n\le 8n≤8. 对 100%100\%100% 的数据,1≤n≤5... 阅读详情
题目描述 Description

       我们说(i,j)是a1,a2,…,an的一个逆序对当且仅当i<j且ai>aj。例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4)。现在已知N和K,求1..N的所有特定排列,这些排列的逆序对的数量恰好为K。输出这些特定排列的数量。

       例如N=5,K=3的时候,满足条件的排列有15个,它们是:

1,2,5,4,3   1,3,4,5,2    1,3,5,2,4     1,4,2,5,3   1,4,3,2,5

1,5,2,3,4   2,1,4,5,3    2,1,5,3,4     2,3,1,5,4   2,3,4,1,5

2,4,1,3,5   3,1,2,5,4    3,1,4,2,5     3,2,1,4,5   4,1,2,3,5

输入描述 Input Description

输入第一行有两个整数N和K。其中(N<=100,K<=N*(N-1)/2)


输出描述 Output Description

将1..N的逆序对数量为K的特定排列的数量输出,为了避免高精度计算,请将结果mod10000后再输出

样例输入 Sample Input

【样例输入1】

5 3

 

【样例输入2】

10 7

 

【样例输入3】

10 10

样例输出 Sample Output

【样例输出1】

15

 

【样例输出2】

4489

 

【样例输出3】

1670

方程很容易得出:f[i][j]=f[i-1][j-i+1]+f[i-1][j-i+2]+……+f[i-1][j]

但是若果这样是O(n^3)

可以优化为O(n^2)

f[i][j]=f[i-1][j-i+1]+f[i-1][j-i+2]+……+f[i-1][j]

f[i][j-1]=f[i-1][j-i]+f[i-1][j-i+1]+f[i-][j-i+2]+……+f[i-1][j-1]

这两个式子有许多重复项

所以可以合并为f[i][j]=f[i][j-1]+f[i-1][j]-f[i-1][j-i]

代码:

#include<iostream>
#include<cstdio>
#include<ctime>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<string>
#include<set>
#include<map>
#include<vector>
#include<queue>
#include<algorithm>
#ifdef WIN32
#define AUTO "%I64d"
#else
#define AUTO "%lld"
#endif
#define INF 0x3f3f3f3f
#define clock CLOCKS_PER_SEC
#define cle(x) memset(x,0,sizeof(x))
#define maxcle(x) memset(x,127,sizeof(x))
#define mincle(x) memset(x,-1,sizeof(x))
#define cop(a,x) memcpy(x,a,sizeof(a))
#define FROP "codvs"
#define C(a,b) next_permutation(a,b)
#define LL long long
using namespace std;
const int N=105,mod=1e4;
int n,k,f[N*N/2][N];
int main()
{
freopen(FROP".in","r",stdin);
freopen(FROP".out","w",stdout);
scanf("%d%d",&n,&k);
for(int i = 0 ; i <= n; i++)
f[0][i]=1;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= k; j++)
{
f[j][i]=(f[j][i-1]+f[j-1][i])%mod;
if(j>=i)f[j][i]=(f[j][i]-f[j-i][i-1]+mod)%mod;//!!!!!!!1减后防止为负数,,而且j>=i!!!!!!
}
printf("%d",f[k][n]);
return 0;
}

还有两点很重要

1.j>=i,,数组下标运算时,不能为负数。。。!!!!!!!!注意判断,,,这个递推式子。。

2.当要模一个数的时候,,,特别当有减的时候,,一定要加上这个数在减去在模,防止模后又减去未负数!!!!!!!!!

if(j>=i)f[j][i]=(f[j][i]-f[j-i][i-1]+mod)%mod;///////////!!!!!!!!!!!!!!

《QGIS快速入门与应用基础》108:CGCS2000对应的投影坐标系 本文详细解析了CGCS2000地理坐标系对应的各类投影坐标系,包括高斯-克吕格3°带/6°带、UTM、地方独立投影和Web墨卡托投影。文章系统阐述了各投影类型的分带规则、参数设置、精度特性及适用场景,并提供了EPSG编码对照表和QGIS操作指南。通过"基准+投影"的绑定机制,这些投影坐标系实现了平面坐标与经纬度的精准转换,满足从大比例尺工程测量到Web地图服务等不同应用需求。内容涵盖投影原理、坐标格式、变形控制等关键技术要点,为GIS开发者和测绘人员提供了实用的参考信息。 阅读详情

相关推荐

VL53L0X加盖玻片后精度暴跌?手把手教你完成串扰校准(CrossTalk Calibration)

本文详细解析了VL53L0X激光测距传感器加盖玻片后精度下降的原因,并提供了串扰校准(CrossTalk Calibration)的完整解决方案。通过分步指导和实用代码示例,帮助工程师恢复毫米级测距精度,适用于智能门锁、扫地机器人等应用场景。

weixin_33708432的博客 539

求逆序对的个数(选择排序)

 求逆序对的个数逆序对是指数列中与需要排序的大小相反的数对。比如:数列中,从小到大逆序对的个数是8个,分别是逆序对可以用来衡量当前数列排序的情况,如果逆序对个数是零的时候,数列就是已经排序好的。求法:1.求逆序对的个数的算法很简单可以想象到修改选择排序就可以计算出逆序对的个数。具体如下:比如数列1: 选择第1个数5和他后边的数比较,得到逆序对,代价是C1*4(C1是常数)2: 选择第2个数

Divine Mind 1523

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)

本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。

weixin_30335575的博客 536

数组中逆序对的个数

import com.google.common.base.Preconditions; /** * 数组中的逆序对:数组中任意的两个数字,如果前一个数字大于后一个数字,则这两个数字就构成了一个逆序对。 */ public class InverseParisInArray { /** * 求指定数组中,逆序对的个数。 */ public static...

java小兵 2374

RSL-RL:开源人形机器人强化学习控制研究库

摘要:RSL-RL是一款专为机器人领域设计的开源强化学习库,其核心特点是紧凑性、可修改性和高性能。该库聚焦PPO和BC两大主流算法,并整合了对称性增强、好奇心驱动等机器人专用技术。通过纯GPU训练优化,RSL-RL在大型仿真中展现出卓越的吞吐性能,已成功应用于腿足运动控制、全身协调等多个机器人研究场景。其轻量级架构包含运行器、算法和网络三个可独立修改的组件,支持TensorBoard等主流日志工具。该框架特别适合需要快速原型开发的机器人研究者,但不适用于通用机器学习基准测试。开源地址:https://git

2506_90492529的博客 1675

OpenCV实战系列——图像线条提取

基于内容的图像分析,需要从构成图像的像素集合中提取有意义的特征。轮廓、线条、区域等是基本的图像基元,可用于描述图像中包含的元素。本节将介绍如何提取重要的图像线条特征。

m0_58523831的博客 1万+

NOIp2013提高组 火柴排队————逆序对+贪心

题解:本题主要考查逆序对,树状数组。 简要题意:两列火柴之间的距离为:∑(ai−bi)2\sum(a_i-b_i)^2∑(ai​−bi​)2,每列火柴中相邻两根火柴的位置都可以交换,请通过交换使两列火柴之间的距离最小,求最少交换次树数。 1.贪心:我们要∑(firi−seci)2\sum(fir_i-sec_i)^2∑(firi​−seci​)2最小,相当于要最小化 (firi−seci)(fir...

wly1127的博客 593

24、流化催化裂化的分子建模

本文探讨了流化催化裂化(FCC)的分子建模方法,重点分析了如何通过机理建模和模型修剪策略(如反应规则和随机规则)来减少计算复杂度,同时保持化学意义。文章还介绍了定量结构反应性关联(QSRC)在动力学参数确定中的应用,以及结焦对催化剂活性的影响。通过这些方法,FCC反应模型能够在预测产物分布的同时,显著提高计算效率。

s8t9u0v1w的博客 141

Noip 2013 火柴排队 - 逆序对 - 转化思想

当a列火柴和对应的每一个b列火柴差值最小时,答案最小也就是说,需要a列的第i高火柴与b列的第i高火柴在位置上相对应但是这个操作比较难想,我们不妨设f(x)为a列第x高火柴的位置在b列中的位置(注意,x指a列第x高火柴在a列的位置,而f(x)是位置与位置的映射)。而目标转化为使f[x] = x,也就是说把f(x)转换为一个递增序列,那么转换的操作次数就是f(x)的逆序对数,并且,对f(x)的操作即对b

Zolrk的博客 348

YOLOv11改进 - 卷积Conv | SPD-Conv空间深度转换卷积优化空间信息编码,攻克小目标检测难题

本文介绍了一种名为SPD-Conv的新型CNN构建块及其在YOLOv11中的结合。传统CNN在处理低分辨率图像或小物体时,因使用步长卷积和池化层导致细粒度信息丢失、性能下降。SPD-Conv由空间到深度(SPD)层和非步长卷积(Conv)层组成,完全消除卷积步长和池化层,避免信息损失。SPD层重排特征图元素将空间信息转换到深度维度,非步长卷积层进一步处理特征图。我们将SPD-Conv集成进YOLOv11,实验证明其在低分辨率图像和小物体检测任务上显著优于现有模型。

魔改工程师的博客 1141

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

如何使用freesurfer对T1w结构像进行分区指标的提取?——皮层面积,灰质体积,平均厚度,厚度标准差,平均曲率、高斯曲率、曲率指数、折叠指数

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3788

1401 逆序统计(递推)

1401 逆序统计 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 查看运行结果 题目描述 Description 我们说(i,j)是a1,a2,…,an的一个逆序对当且仅当j>i且ai>aj。例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4...

weixin_30492047的博客 250

ROSTEA软件下载及情感分析详细操作教程(附网盘链接)

原ROST虚拟团队出品的ROST系列文本内容挖掘分析平台,是辅助人文社会科学研究的免费计算平台。该软件可以实现文本预处理、分字、分词、词性识别、特殊名词抽取、词频统计、英文词频统计、情感计算、分类算法、聚类算法等一系列文本挖掘,是人文社科研究和论文写作的一把利器。该软件用户量超过一万人,遍布海内外100多所大学,包括剑桥大学、日本北海道大学、北京大学、清华大学、香港城市大学、澳门大学等众多高校。关于ROSTCM6的安装介绍可以参考之前的文章ROSTCM6软件下载及语义网络分析详细操作教程ROST EA。

m0_64336780的博客 1万+

【NOIP模拟赛】长寿花(组合计数,DP去重)

n,m<=1e6,ai<=5e3,∑ai<=1e6n,m<=1e6,a_i<=5e3,\sum a_i <= 1e6n,m<=1e6,ai​<=5e3,∑ai​<=1e6 不用谢。\text 不用谢。不用谢。 首先每一层的答案只与颜色的数量有关。 但是相邻层的颜色集合不能相同。 预处理gi,jg_{i,j}gi,j​表示iii个位置分配给jjj...

Freopen的博客 250

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

逆序对的dp

求逆序对:关于逆序对的DP(和归并没半毛关系) 1ff  我们说(i,j)是a1,a2,…,aN的一个逆序对当且仅当ia j。例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4)。现在已知N和K,求1…N的所有特定排列,这些排列的逆序对的数量恰好为K。输出这些特定排列的数量。 例如N=5,K=3的时候,满足条件的排列有15个,它们是: 1,2,5,4,

zyhsdl的博客 988

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【2012.03.09普及组】逆序统计//2018.2.2

题目 题目描述 我们说(i,j)是a1,a2,…,aN的一个逆序对当且仅当i小于j 且ai大于aj。例如2,4,1,3,5 的逆序对有3个,分别为(1,3),(2,3),(2,4)。现在已知N 和K,求1..N 的所有特定排列,这些排列的逆序对的数量恰好为K。输出这些特定排列的数量。 例如N=5,K=3 的时候,满足条件的排列有15个,他们是 1,2,5,4,3 1,3,4,5,

Nowed 719

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NOIP模拟:水题(1):nlog(n)求逆序对

手套 【问题描述】        你现在有N对手套,但是你不小心把它们弄乱了,需要把它们整理一下。N对手套被一字排开,每只手套都有一个颜色,被记为0~N-1,你打算通过交换把每对手套都排在一起。由于手套比较多,你每次只能交换相邻两个手套。请你计算最少要交换几次才能把手套排整齐。 【输入】 输入第一行一个N,表示手套对数。 第二行有2N个整数,描述了手套的颜色。每个数都在0~N-1之间,且

KsCla 1251

洛谷 P1521 求逆序对

题目描述 我们说(i,j)是a1,a2,…,aN的一个逆序对当且仅当i<j且ai>a j。例如2,4,1,3,5的逆序对有3个,分别为(1,3),(2,3),(2,4)。现在已知N和K,求1…N的所有特定排列,这些排列的逆序对的数量恰好为K。输出这些特定排列的数量。 例如N=5,K=3的时候,满足条件的排列有15个,它们是: 1,2,5,4,3 1,3,4,5,2 1,3,5,2...

weixin_33688840的博客 350

n个数字恰好组成k个逆序对的排列组合方案有几个?

斜率优化可大大降低时间复杂度,省去不必要的枚举行为,这些知识要熟悉,才能应对互联网大厂的难题。

weixin_46838716的博客 1902

求逆序对

Problem Description 给定一个序列a1,a2,...,an,如果存在iaj,那么我们称之为逆序对,求逆序对的数目。 (n Input 输入有多组数据,每组数据第1行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。 Output 对于每组数据输出所有逆序对的总数。 Sample Input 4 3 2 3 2 S

笑看风云起的专栏 2504

逆序对

对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。 咳咳,为什么我要复制一遍而不贴原题,甚至连P1908都没有贴上呢。 因为我今天在和hyf进行了在吉他班的深度颓废交流后,hyf告诉了我很重要的思路:你从未见过的全新做法!!! 天机不泄,请看下文。 //逆序对怎么做,这是你没见过的全新做法 //当然,只...

weixin_30745641的博客 232

给出一列数a1,a2,a3....an,求它们的逆序对数,即有多少个有序对(i,j) 使得iaj,n高达10的6次方...

//归并排序 //#include<stdio.h> //#include<string.h> //#include<algorithm> //#include<iostream> //using namespace std; // //int n,m; //int a[10],b[10]; // //void merge_sort(int*...

weixin_30649641的博客 502

wikioi1688 求逆序对

题目描述Description 给定一个序列a1,a2,…,an,如果存在i<j并且ai>aj,那么我们称之为逆序对,求逆序对的数目 数据范围:N<=105。Ai<=105。时间限制为1s。 输入描述Input Description 第一行为n,表示序列长度,接下来的n行,第i+1行表示...

weixin_30487701的博客 359

51nod 1020 1到n的全排列逆序对为k的方案数

题目链接: http://www.51nod.com/Challenge/Problem.html#problemId=1020 题意: 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序,逆序数是4。 1-n的全排列中,逆序数最小为0(正...

lt的博客 3797

codevs.1688 求逆序对

题目描述 Description 给定一个序列a1,a2,…,an,如果存在i并且ai>aj,那么我们称之为逆序对,求逆序对的数目   数据范围:N5。Ai5。时间限制为1s。 输入描述 Input Description 第一行为n,表示序列长度,接下来的n行,第i+1行表示序列中的第i个数。 输出描述 Output Descripti

qq_36392612的博客 606
上一篇: [hzxjhs模拟2(T1,T3)][欧拉函数][dp]
下一篇: [dp][NOIP2005]过河
Freddddddddddd
博客等级 码龄10年 2粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值