noi7219 复杂的整数划分问题

 #include <bits/stdc++.h>
using namespace std;
const int maxn = ;
int dp1[maxn][maxn], dp2[maxn][maxn], dp3[maxn][maxn], dp4[maxn][maxn];
void init() {
for (int n = ; n <= ; n++) {
for (int k = ; k <= ; k++) {
if (n == k) dp1[n][k] = ;
else if (n < k) dp1[n][k] = ;
else dp1[n][k] = dp1[n-k][k]+dp1[n-][k-];
}
} for (int n = ; n <= ; n++) {
dp2[n][] = n== ? : ;
for (int m = ; m <= ; m++) {
if (n < m) dp2[n][m] = dp2[n][n];
else if (n == m) dp2[n][m] = dp2[n][m-]+;
else dp2[n][m] = dp2[n][m-]+dp2[n-m][m-];
}
} for (int n = ; n <= ; n++) {
dp3[n][] = (n%), dp4[n][] = (n%==);
dp3[n][] = dp3[n][];
for (int m = ; m <= ; m++) {
if (n < m) dp3[n][m] = dp4[n][m] = ;
else if (n == m) dp3[n][m] = , dp4[n][m] = ;
else {
dp3[n][m] = dp3[n-][m-]+dp4[n-m][m];
dp4[n][m] = dp3[n-m][m];
}
dp3[n][] += dp3[n][m];
}
}
}
int main() {
init();
int n, k;
while (cin >> n >> k) {
cout << dp1[n][k] << endl;
cout << dp2[n][n] << endl;
cout << dp3[n][] << endl;
}
return ;
}

最新文章

  1. 在tmux中的vi 上下左右键变为了ABCD等字符
  2. .net(C#)中this关键字
  3. MVC中的成员资格,授权,安全性
  4. 时间日期----java
  5. EMS电子面单接口对接使用-免费版
  6. 递归---NYOJ-90整数划分(一)
  7. 初次接触VC++载入自己定义LIB 即静态链接
  8. 列表标题栏添加CheckBox(自定义HanderView的时候实现)
  9. iOS数据持久化之数据库:SQLite和FMDB
  10. Visual Studio 2017正式版离线安装及介绍
  11. python jason,pickle
  12. 教小朋友学Linux
  13. Kotlin 扩展——省略findViewById
  14. DDoS攻击与防御(4)
  15. 关于 HTTP GET/POST 请求参数长度最大值的一个理解误区(转载)
  16. burpsuite的使用(二)
  17. 必修3第三章概率mindmaps
  18. spring单元测试的基本配置
  19. 跟浩哥学自动化测试Selenium -- Selenium简介 (1)
  20. 洛谷 P2258 子矩阵

热门文章

  1. 数据库SQL---数据库系统概论
  2. golang/beego 微信模版消息
  3. 详解 Discuz 的 PHP经典加密解密函数 authcode
  4. bootstrop设置背景图片自适应屏幕
  5. Linux系统硬件时间12小时制和24小时制表示设置
  6. Spring5参考指南:容器扩展
  7. docker 部署FastDFS
  8. C++ 快读快写
  9. 树上倍增法求LCA
  10. .Net Core中使用Dapper构建泛型仓储