传送门

文章目录

  • 题意:
  • 思路:

题意:

给你n,mn,mn,m,让你构造两个数组a,ba,ba,b满足:1<=ai,bi<=n1<=a_i,b_i<=n1<=ai​,bi​<=n,len=mlen=mlen=m,ai<=bia_i<=b_iai​<=bi​,aaa是非递减的,bbb是非递增的。求能够造出多少个这样的数组。

思路:

可以发现,由于ai<=bia_i<=b_iai​<=bi​,aaa是非递减的,bbb是非递增的,所以两个数组只需要an<=bna_n<=b_nan​<=bn​即可。所以我们用dpdpdp求出a,ba,ba,b以某个数iii结尾的方案,让后a[m][i]∗b[m][j]a[m][i]*b[m][j]a[m][i]∗b[m][j]组合起来就行了。
所以我们定义f[i][j]f[i][j]f[i][j]表示到了第iii个位置,当前数为jjj的方案数,所以aaa数组转移就是f[i][j]=∑k=1jf[i−1][k]f[i][j]=\sum _{k=1} ^j f[i-1][k]f[i][j]=k=1∑j​f[i−1][k]
bbb数组直接倒过来就行了。
最后答案即为a[m][i]∗b[m][j]a[m][i]*b[m][j]a[m][i]∗b[m][j]。

//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid (tr[u].l+tr[u].r>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=1010,mod=1e9+7,INF=0x3f3f3f3f;
const double eps=1e-6;int n,m;
LL a[20][N],b[20][N];int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) a[1][i]=b[1][i]=1;for(int i=2;i<=m;i++)for(int j=1;j<=n;j++)for(int k=1;k<=j;k++)(a[i][j]+=a[i-1][k])%=mod;for(int i=2;i<=m;i++)for(int j=1;j<=n;j++)for(int k=n;k>=j;k--)(b[i][j]+=b[i-1][k])%=mod;LL ans=0;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i<=j) (ans+=a[m][i]*b[m][j])%=mod;printf("%lld\n",ans%mod);return 0;
}
/**/

Educational Codeforces Round 80 (Rated for Div. 2) C. Two Arrays 组合数|dp相关推荐

  1. Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学

    传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai​,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai​!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...

  2. Educational Codeforces Round 80 (Rated for Div. 2)SZU cf集训round2 C~E(dp,状压+二分,树状数组+逆向思维)

    C. Two Arrays 题目大意:就是给定两个整数n和m.计算数组对的数量(a,b),使得: 1 .两个阵列的长度都等于m: 2 .每个数组的每个元素都是1到n(包括1和n)之间的整数: 从1到m ...

  3. Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator 思维 + 树状数组

    传送门 文章目录 题意: 思路: 题意: 给你nnn个人,一开始位置分别为1,2,...,n1,2,...,n1,2,...,n,让后mmm个操作,每次都将某个人移动到最前面,其他人依次顺延,求每个人 ...

  4. Educational Codeforces Round 80 (Rated for Div. 2) 二分 + 状压

    传送门 文章目录 题意: 思路: 题意: 给你nnn个长度为mmm的数组,选出两个来,让他们每一位取maxmaxmax构成新数组bbb,让后最大化bbb的最小值. 思路: 看到m=8m=8m=8,也就 ...

  5. Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays

    题目链接 题意:给你两个数x,yx,yx,y,让你构造一些长为yyy的数列,让这个数列的累乘为xxx,输出方案数. 思路:考虑对xxx进行质因数分解,设某个质因子PiP_iPi​的的幂为kkk,则这个 ...

  6. Educational Codeforces Round 138 (Rated for Div. 2) D

    Educational Codeforces Round 138 (Rated for Div. 2) D. Counting Arrays 题意 给定长度为nnn的数组aaa,若gcd(ai,i)= ...

  7. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  9. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

最新文章

  1. Android移动开发之【通往安卓的神奇之旅】TextView和ImageView 实现跑马灯效果
  2. C++:MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStart...
  3. mysql索引数据结构图解_深入理解Mysql索引底层数据结构与算法
  4. MySQL索引类型 btree索引和hash索引的区别
  5. jQuery ajax - getScript() 方法
  6. (11) nginx + keepalived 双机热备
  7. window.showModalDialog()用法及注意事项
  8. SAP 电商云 Spartacus UI 里的 InjectionToken 应用场景
  9. flink读取不到文件_日处理数据量超10亿:友信金服基于Flink构建实时用户画像系统的实践...
  10. 【渝粤题库】广东开放大学 劳动关系理论与实务 形成性考核
  11. CM3计算板安装硬件时钟DS3231
  12. 深入浅出mybatis之入门使用
  13. 看看虚函数表是什么样的
  14. Java线程专栏文章汇总(转)
  15. centOS6.4部署svn
  16. 软件工程基础-结对项目Ⅰ-2014
  17. web前端 原生js签名板(电子签名)写字板 canvas 截图
  18. Android中什么是Dex文件
  19. wgs84坐标系拾取工具_COORD坐标转换
  20. 图像处理基础:特征金字塔

热门文章

  1. python里split_python中split()的用法
  2. 世界上最危险的20座七绝古寺,你敢去住一晚吗?
  3. 见识决定眼界,关注这些让你变得博学且有趣
  4. 图像还可以这样玩!如何用OpenCV处理图像?
  5. 这本 “写不完” 的黑科技笔记本,恐怕要颠覆整个行业!
  6. 今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)
  7. linux安装grpc占用空间大,grpc linux安装-Go语言中文社区
  8. python迅雷_迅雷下载链接解析器。
  9. 河南信息工程学校计算机组装比赛,计算机技术系承办2019全员化试点项目计算机网络装调赛项...
  10. 索尼android 怎么截屏快捷键,索尼XZ Premium怎么截屏 2种索尼XZ Premium截图方法