51nod 1250 排列与交换
来源:互联网 发布:美妙天堂知里绘画图片 编辑:程序博客网 时间:2024/05/17 09:03
1250 排列与交换
题目来源: HackerRank
基准时间限制:2 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注
一个数组A = [1, 2, 3, …, n]。
对A进行好恰好k次相邻交换,能得到多少个不同的序列 (S1)?
对A进行最多k次交换,你能得到多少个不同的序列 (S2)?
一次相邻交换是指交换数组A中两个相邻位置的元素,即:交换A[i]和A[i+1]或者A[i]和A[i-1]。
一次交换是指交换数组A中的任意两个位置不同的元素,即:交换A[i]和A[j],1 <= i, j <= N, i != j。
给出数组A的长度N,以及次数K,求S1和S2。由于结果很大,输出Mod 1000000007的结果。
例如:原始数组: [1, 2, 3]
经过两次相邻交换:
我们得到 [1, 2, 3], [2, 3, 1], [3, 1, 2] ==> S1 = 3经过最多两次交换:
1) 0次交换后: [1, 2, 3]
2) 1次交换后: [2, 1, 3], [3, 2, 1], [1, 3, 2].
3) 两次交换后: [1, 2, 3], [2, 3, 1], [3, 1, 2] ==> S2 = 6
Input
输入2个数N, K,中间用空格分隔,(1 <= N, K <= 3000)
Output
输出2个数S1, S2 Mod 1000000007的结果,中间用空格分隔。
Input示例
3 2
Output示例
3 6
【分析】
第一问逆序对DP。
第二问普通DP。
【代码】
//51nod 1250 排列与交换#include<bits/stdc++.h>#define ll long long#define M(a) memset(a,0,sizeof a)#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;const int mxn=3005;const int mod=1e9+7;int n,k,ans;int dp[mxn][mxn];int main(){ int i,j; scanf("%d%d",&n,&k); dp[0][0]=1; fo(i,0,n) { if(i) fo(j,1,k) dp[i][j]=(dp[i][j]+dp[i][j-1])%mod; fo(j,0,k) { dp[i+1][j]=(dp[i+1][j]+dp[i][j])%mod; if(i+j+1<=k) dp[i+1][i+j+1]=(dp[i+1][i+j+1]-dp[i][j]+mod)%mod; } } fo(i,0,k) if((k-i)%2==0) ans=(ans+dp[n][i])%mod; printf("%d ",ans); ans=0,M(dp); fo(i,0,n) dp[i][0]=1; fo(i,1,n) fo(j,1,k) dp[i][j]=(dp[i-1][j]+(ll)(i-1)*dp[i-1][j-1]%mod)%mod; fo(i,0,k) ans=(ans+dp[n][i])%mod; printf("%d\n",ans); return 0;}
阅读全文
0 0
- 51nod 1250 排列与交换
- 51nod 1250 排列与交换
- 51nod 1250 排列与交换 动态规划
- 51nod 排列与交换 序列dp
- 51Nod1250 排列与交换
- 51nod 1260 排列与二叉树
- 51nod 1370 排列与操作
- 51nod 1370 排列与操作
- 51nod 全排列
- JZOJ 5253. 排列与交换
- 全排列【51nod】【全排列】
- 1384全排列【51NOD】
- 51NOD 1384 全排列
- 51Nod 1454 升排列
- 51NOD 1020 逆序排列
- 51nod 1384 全排列
- 51Nod--1384全排列
- 51NOD 1384 全排列
- 【已解决】接应用宝sdk:在没有装QQ的情况下QQ登录会打开页面提示下载QQ,此时返回就会报错误
- Nginx 配置静态文件404问题
- 学习Linux命令(37)
- POJ 1269 Intersecting Lines(判断两条直线的位置关系)
- 36. OP-TEE中secure stroage的使用
- 51nod 1250 排列与交换
- 浅谈虚拟机(2.2)如何捅出了这一刀の操作数栈
- synchronized
- 目录菜单树的实现及查询
- leetcode--4. Median of Two Sorted Arrays
- xuptoj 1476快速幂(演示用):
- Win7下U盘安装Ubuntu16.04系统,并且配置登录校园网,亲测可行
- JavaScript模式之第2章总结
- think in java第八章多态 总结随笔