逆序对

jzoj 2014

题目大意:

有一个长为n的序列(由1,2,3,……n组成),问经过某种调整之后,有k个逆序对(即在前面的一个数大于后面的一个数这样的对)的种数,有多组数据,以0 0结尾

样例输入

3 0
3 1
3 2
3 3
4 2
4 10
13 23
18 80
0 0

样例输出

1
2
2
1
5
0
46936280
184348859235088

数据范围限制

1 <= 数据组数 <=100, 1 <= n <= 50, 0 <= k <= 1500。

解题思路:

首先设f[i][j]f[i][j]f[i][j]为前iii个字符有jjj对逆序对的种数,然后因为插入的地方不同,且不同地方增加的逆序对也不同,所以得出:f[i][j]=∑k=0min(i−1,j)f[i−1][j−k]f[i][j]=\sum_{k=0}^{min(i-1,j)}f[i-1][j-k]f[i][j]=k=0∑min(i−1,j)​f[i−1][j−k]
注:取min值是因为当kkk大于jjj时j−kj-kj−k会小于0
其次看到样例,我们可以发现数据是十分大的,所以要用高精,因为时间内存的限制,所以我们要压位

代码:

#include<cstdio>
#define min(x,y) (x)<(y)?(x):(y)
using namespace std;
int x,y,f[51][1501][11];
int main()
{f[1][0][1]=1;for (int i=2;i<=50;++i)//第几个数for (int j=0;j<=1500;++j)//有多少个逆序对for (int k=0;k<=(min(i-1,j));++k)//在哪里插入for (int c=1;c<=10;++c)//高精{f[i][j][c]+=f[i-1][j-k][c];//累加f[i][j][c+1]+=f[i][j][c]/1000000000;//压位f[i][j][c]%=1000000000;}scanf("%d %d",&x,&y);while (x!=0||y!=0){int k=10;while (!f[x][y][k]&&k>1) k--;//去零printf("%d",f[x][y][k]);//输出for (int i=k-1;i>0;--i)printf("%0*d",9,f[x][y][i]);//后面的要保持前导0putchar(10);//换行scanf("%d %d",&x,&y);} return 0;
}

【DP】【高精】逆序对(jzoj 2014)相关推荐

  1. 【luogu1018】 乘积最大 [区间dp+高精][noip2000]

    P1018 乘积最大 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. DP+高精 #include<bits/stdc++ ...

  2. 【区间DP+高精】codevs1166 矩阵取数游戏题解

    转自: [ametake版权所有]http://blog.csdn.net/ametake欢迎来看 http://blog.csdn.net/ametake/article/details/47664 ...

  3. 【日常学习】【区间DP+高精】codevs1166 矩阵取数游戏题解

    题目来自NOIP2007TG3 如果在考场上我现在已经歇菜了吧 今天一整天的时间全部投在这道题上,收获不小. 先上题目 题目描述 Description [问题描述] 帅帅经常跟同学玩一个矩阵取数游戏 ...

  4. P2159 [SHOI2009]舞会(DP高精)

    P2159 [SHOI2009]舞会(DP&高精) n=200n=200n=200,考虑n3n^3n3的dpdpdp,但是本题没有模数,所以要高精度,且高精常数巨大,所以考虑n2n^2n2 的 ...

  5. 【每日DP】day 10、P1005 矩阵取数游戏【区间DP+高精(python)】难度⭐⭐⭐★

    P1005 矩阵取数游戏 输入 2 3 1 2 3 3 4 2 输出 82 说明/提示 NOIP 2007 提高第三题. 数据范围: 60%60\%60% 的数据满足:1≤n,m≤301\le n,m ...

  6. SCUT - 299 - Kaildls的数组划分 - dp - 高精

    https://scut.online/p/299 \(dp[i][k]\) 为前 \(i\) 个数分 \(k\) 组的最大值,那么 $dp[i][k]=max_{p=1}^{i-1}{dp[p][k ...

  7. 【状压DP+高精】【cofun1370】走道铺砖问题

    [cofun1370]走道铺砖问题 Description 有一个专门为装修设计方案的设计师.在某一天,他接到了一个项目,为一栋正在修建的大楼设计走道的地板铺设方案.此项目的委托人事先便进行了说明:地 ...

  8. bzoj1089 [SCOI2003]严格n元树(dp+高精)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 1899  Solved: 954 [Submit][Sta ...

  9. 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解

    文章目录 逆序对 对序列 未曾设想的道路 牛客IOI周赛26-提高组 逆序对 这种套路之前已经见过几次了,肯定不是模拟操作数列 opt 1 对于i∈[1,l)⋃(r,n]i∈[1,l)\bigcup( ...

最新文章

  1. 【转载】如果你身边有程序员的朋友,请善待他们
  2. 九、序列参数集Sequence Paramater Set(SPS)解析
  3. 【错误记录】Android 模拟器安装应用报错 ( INSTALL_FAILED_INSUFFICIENT_STORAGE )
  4. spring boot自动配置之jdbc
  5. 博通1300亿美元收购高通,一场充满大饼和落井下石的“大戏”
  6. html点击按钮弹出窗口_电脑桌面总是弹出广告怎么办?教你2种方法,轻松解决...
  7. CSS3 经典教程系列:CSS3 圆角(border-radius)详解
  8. POJ 3274 Gold Balanced Lineup(哈希)
  9. php程序员跟java一样吗,【后端开辟】php程序员能够转java吗?
  10. android 炫酷3d主页,五款超酷安卓手机3D桌面软件合辑推荐
  11. vue条件渲染指令if/show
  12. Dll中的方法向外返回dynamic类型可能会失败
  13. Python处理多种编码报错的处理
  14. pytorch使用万能模板
  15. 迈克尔.杰克逊时代的意义
  16. opencv倾斜校正 java,OpenCV实现基于傅里叶变换的旋转文本校正
  17. 教你修改电脑mac地址图解教程
  18. 项目一:使用python tkinter模块做简单的计算器
  19. 关于Linux系统中文件名中带有空格问题分析
  20. Android开发:微信应用签名如何获取

热门文章

  1. spss22.0统计分析从入门到精通_数据分析最全资料:SPSS/MATLAB/SQL/SAS/EXCEL经典教材+视频教程,快速入门!...
  2. c语言中文件如何插入数据,急求如何将下列C语言程序数据存储到文件中?
  3. 鸿蒙系统可以替代安卓吗,华为今天发布的鸿蒙系统,到底能不能替代安卓?
  4. 关于前端性能优化问题,认识网页加载过程和防抖节流
  5. [JavaWeb-MySQL]约束(非空约束,唯一约束,主键约束,外键约束_级联操作)
  6. C++实现井字棋小游戏(写得不好,留作纪念!!!)
  7. [蓝桥杯]回形取数-方向向量+模拟
  8. 树,森林,二叉树的互相转换
  9. [51 nod 123] 最大公约数之和 V3(杜教筛)
  10. 疾病预测和天气分析练习赛