题目大意:

给定n和m,有两个数组,两个数组的长度都等于m

数组内每个元素都在1到n中

对于两个数组对应的位置i,必须满足a[i]<=b[i]

a数组必须是不下降的序列

b数组必须是不上升的序列

求有多少种ab数组的排列方案满足上述题意

解题思路:

因为a不下降,b不上升,所以a总体呈上升趋势(或趋平),b总体呈下降趋势(或趋平)

所以只要满足a[m]<=b[m]即可让这个序列方案满足题意

或者说,将a数组左右对称后拼接在b数组后面,使得整个数组完全呈严格下降趋势的时候,即可满足题意

因此进行动态规划,令dp[i][j]表示第i个元素值为j时的方案数

对于整个数组全是最大值n的情况,显而易见只有一种方案数,所以dp[1~2m][n]=1

其后,第一个元素值为j时,方案数明显只有1;第i个元素值为j时,方案数为第i-1个元素为j时的方案数加上第i个元素为j+1时的方案数相加得到

故得到状态转移方程为

dp[i][j]=dp[i-1][j]+dp[i][j+1]

最后取答案时,累加dp[2m][1~n]的所有方案数即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=;
ll dp[][];
int main(){
ios::sync_with_stdio();
cin.tie();cout.tie();
ll n,m,i,j,ans=;
cin>>n>>m;
for(i=;i<=*m;i++)
dp[i][n]=;
for(j=n-;j;j--){
dp[][j]=;
for(i=;i<=*m;i++)
dp[i][j]=(dp[i-][j]+dp[i][j+])%mod;
}
for(j=n;j;j--)
ans=(ans+dp[*m][j])%mod;
cout<<ans; return ;
}

Codeforces 1288C - Two Arrays的更多相关文章

  1. codeforces 1288C. Two Arrays(dp)

    链接:https://codeforces.com/contest/1288/problem/C C. Two Arrays 题意:给定一个数n和一个数m,让构建两个数组a和b满足条件,1.数组中所有 ...

  2. Codeforces 1090D - Similar Arrays - [思维题][构造题][2018-2019 Russia Open High School Programming Contest Problem D]

    题目链接:https://codeforces.com/contest/1090/problem/D Vasya had an array of n integers, each element of ...

  3. Codeforces 893E - Counting Arrays

    893E - Counting Arrays 思路:质因子分解. 对于每个质因子,假设它有k个,那么求把它分配到y个数上的方案数. 相当于把k个小球分配到y个盒子里的方案数. 这个问题可以用隔板法(插 ...

  4. Codeforces 915G Coprime Arrays 莫比乌斯反演 (看题解)

    Coprime Arrays 啊,我感觉我更本不会莫比乌斯啊啊啊, 感觉每次都学不会, 我好菜啊. #include<bits/stdc++.h> #define LL long long ...

  5. codeforces 1140E Palindrome-less Arrays

    题目链接:http://codeforces.com/contest/1140/problem/E 题目大意: 如果一个数组的存在一个奇数长的回文就不好. 不是不好的数组是好的. 你可以把-1用1到k ...

  6. Codeforces 893E Counting Arrays:dp + 线性筛 + 分解质因数 + 组合数结论

    题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6 ...

  7. Educational Codeforces Round 6 D. Professor GukiZ and Two Arrays 二分

    D. Professor GukiZ and Two Arrays 题目连接: http://www.codeforces.com/contest/620/problem/D Description ...

  8. Vasya and Beautiful Arrays CodeForces - 354C (数论,枚举)

    Vasya and Beautiful Arrays CodeForces - 354C Vasya's got a birthday coming up and his mom decided to ...

  9. 【CodeForces】915 G. Coprime Arrays 莫比乌斯反演,前缀和,差分

    Coprime Arrays CodeForces - 915G Let's call an array a of size n coprime iff gcd(a1, a2, ..., *a**n) ...

随机推荐

  1. Spark RDD 算子总结

    Spark算子总结 算子分类 Transformation(转换) 转换算子 含义 map(func) 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 filter(func) ...

  2. junit基础学习之-测试service层(3)

    测试步骤: 在之前的文章中已经加了junit的环境,这就不需要了. 1.加载junit类,spring配置文件,指明junit测试器,@Runwith 2.定义变量,service,不可以使用spri ...

  3. K8S Kubernetes 简单介绍 转自 http://time-track.cn/kubernetes-trial.html Kubernetes初体验

    这段时间学习了一下 git jenkins docker  最近也在看  Kubernetes  感觉写得很赞  也是对自己对于K8S 有了进一步得理解  感谢 倪 大神得Blog 也希望看到这篇Bl ...

  4. 【转】Selenium 利用javascript 控制滚动条

    http://luyongxin88.blog.163.com/blog/static/92558072011101913013149/ < xmlnamespace prefix =" ...

  5. Cobalt Strike简单使用(9,29第十五天)

    本文转自:https://www.cnblogs.com/yuanshu/p/11616657.html 一.介绍: 后渗透测试工具,基于Java开发,适用于团队间协同作战,简称“CS”. CS分为客 ...

  6. 21 ~ express ~ 前台内容分类展示

    一,前台 , views/main/index.html ,通过get传送给后台 思路 : 将栏目ID 传递给后台,后台根据 栏目的ID 返回相应的数据   {% if category == '' ...

  7. stm32cube 安装 patch

    首先正常安装芯片包,然后在设置里面找到当前包存放的位置,默认是: C:\Users\Administrator\STM32Cube\Repository 然后解压 更新包,把更新包里面的文件覆盖到 C ...

  8. opencv vs2013提示缺少Qedit.h问题

    #pragma include_alias( "dxtrans.h", "qedit.h" ) #define __IDxtCompositor_INTERFA ...

  9. kubelet组件详解---链接

    https://blog.csdn.net/jettery/article/details/78891733

  10. PHP SeasLog实现高性能日志记录

    https://www.jianshu.com/p/b5c01eb49df0 windows 安装 注意查看上面的信息 我标注了几个关键点  然后下载自己对应的 https://windows.php ...