【NOIP模拟】table(动态规划)
题目背景
SOURCE:NOIP2016-RZZ-2 T2
题目描述
给定一个 n×m 的矩阵,行列均从 1 开始标号。
一个矩阵被认为是稳定的,当且仅当对于任意的 2≤i≤n,第 i 行的数的和不小于第 i−1 行的数的和,且最后一行的数的和小于等于 m ,并且要求矩阵中所有的元素都是非负的。
求所有 n×m 的稳定矩阵的方案数,答案对 109 取模。
输入格式
第一行一个整数 T ,表示数据组数。
每组数据一行两个整数 n,m 。
输出格式
输出 T 行,每行一个整数,表示方案数。
样例数据 1
输入
3
1 1
2 2
2 3
输出
2
25
273
备注
【数据规模与约定】
对于 30% 的数据,n,m≤3。
对于 60% 的数据,n,m≤50。
对于 100% 的数据,1≤n,m≤2000;1≤T≤10。
【题目分析】
题目意思显而易见,求两次dp:
第一次,求出$C(i, j)$:
对于这一次dp,其实就是求组合数,可以使用递推公式: $$C(i, j) = C(i - 1, j - 1) + C(i - 1, j)$$
那么我们在求将$i$个数和为$j$的方案数时, 实际就是将$j$个1分成$i$份,可以看作从$j + i - 1$个数中选出$i - 1$个数(作为栅栏将1隔开)
其实就是求$C(j + i - 1, i - 1)$
第二次,求出$dp(i, j)$表示第$i$行和小于等于$j$的方案数。
这一次dp采用前缀和累加记录。对于当前$dp(i, j)$, 先加上$dp(i, j - 1)$(累加,这样算出来的才是小于等于j的方案数),
然后再加上$C(j + m - 1,m - 1) × dp(i - 1, j)$(上一行的和小于等于当前行的和, 则当前行的和为$j$时(方案数$C(j + m - 1,m - 1)$) ×上一行的和小于等于$j$(方案数$dp(i - 1, j)$).
不要忘记取模(乘法爆int 先乘上 1LL )。
【code】
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
using namespace std; const int N = , Mod = 1e9;
int n, m, T;
int cnt[N<<][N<<], s[N][N]; inline void init(){
for(int i = ; i <= ; i++) cnt[i][] = cnt[i][i] = ;
for(int i = ; i <= ; i++)
for(int j = ; j < i; j++)
cnt[i][j] = (cnt[i - ][j - ] + cnt[i - ][j]) % Mod;
} int main(){
init();
// cout<<sum[2][2]<<" "<<sum[2][1]<<" "<<sum[2][0];return 0;
cin>>T;
while(T--){
cin>>n>>m;
memset(s, , sizeof s);
for(int i = ; i <= m; i++) s[][i] = ;
for(int i = ; i <= n; i++){
for(int j = ; j <= m; j++){
long long tmp = s[i - ][j];
tmp = (1LL * tmp * cnt[j + m - ][m - ]) % Mod;
if(j) s[i][j] = (tmp + s[i][j - ]) % Mod;
else s[i][j] = tmp;
}
}
cout<<s[n][m]<<endl;
}
return ;
}
【NOIP模拟】table(动态规划)的更多相关文章
- 2018.08.29 NOIP模拟 table(拓扑排序+建图优化)
[描述] 给出一个表格,N 行 M 列,每个格子有一个整数,有些格子是空的.现在需要你 来做出一些调整,使得每行都是非降序的.这个调整只能是整列的移动. [输入] 第一行两个正整数 N 和 M. 接下 ...
- noip模拟赛 动态规划
题目描述LYK在学习dp,有一天它看到了一道关于dp的题目.这个题目是这个样子的:一开始有n个数,一段区间的价值为这段区间相同的数的对数.我们想把这n个数切成恰好k段区间.之后这n个数的价值为这k段区 ...
- NOIP模拟 table - 矩阵链表
题目大意: 给一个n*m的矩阵,每次交换两个大小相同的不重叠的子矩阵,输出最后的矩阵 题目分析: 这题向我们展示了出神入化的链表是如何炼成的.思想都懂,实现是真的需要技术,%%% 用一副链表来表示该矩 ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 2016-06-19 NOIP模拟赛
2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)
2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- div模拟table,可实现左右高度同增长(html布局)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
随机推荐
- index.js:13 Uncaught TypeError: Cannot read property 'split' of undefined
使用 webpack 编译 Vue 项目时出现报错: index.js:13 Uncaught TypeError: Cannot read property 'split' of undefined ...
- [python标准库]XML模块
1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词. ...
- 如何添加自己封装的代码到Cocoapod
这两天学习了如何添加自己封装的代码到Cocoapod中 以下是我这两天遇到的各种坑: 旧的方法: http://my.oschina.net/u/727843/blog/392784 这个看看可以大 ...
- ipython及Python初体验
阅读目录: Python环境体验 Python编辑器 ipython安装 Python提示符 Python初体验 print和变量 变量操作 内建函数:方法 数学运算:简单算术.随机数 关于模块 一. ...
- 关于CSS样式优先级学习心得
1.未重复时候,只要有都有格式显示 2.重复时,看权值: 权值:标签 1 <类10< ID 100 PS:(*权值 > 继承(表格属性一般无法继承,有些浏览器也不支持表格继承父标签) ...
- webpack vue 配置
vue-loader 1.)首先创建项目目录 --vue-loader文件夹 |-index.html 入口文件 |-main.js 入口文件 |-App.vue Vue文件 |-package.js ...
- PHP基础入门(四)---PHP数组实用基础知识
PHP数组 数组是特殊的变量,它可以同时保存一个以上的值. ***关键词:数组基础.数组遍历.超全局数组.数组功能.数组函数. 下面来和大家分享一下有关PHP的数组基础知识,希望对你PHP的学习有所帮 ...
- centos yum 没有可用软件包 nginx。
新装的centos7中没有nginx的镜像源 因为nginx位于第三方的yum源里面,而不在centos官方yum源里面 解决方案: 安装epel: 去epel官网: http://fedorapro ...
- java 生产者 与 消费者的案例
主要理解了两个问题 1.线程数据同步的问题 2.线程交替运行的方式 package ThreadDemo; /** * 生产者与消费者的案例(一,同步的问题,值的问题 二,交替执行的问题) * @au ...
- Sass控制命令及函数知识整理
2017-07-07 20:17:17 最底部附结构图(实在是结构图太长了没办法) 2017-06-22 09:11:43 一.Sass的控制命令 1.@if语句 @if 指令是一个 SassSc ...