只写了和dp有关的。。博客 https://www.cnblogs.com/huyufeifei/p/10351068.html

关于状态的继承和转移

这题的状态转移要分开两步来做:

  1.继承之前状态的合法构造数量

  2.构造出该状态下特有的新构造数量

这类dp尽量由已知状态推出未知态(加法转移)来做。。。自己用减法转移都不知道边界怎么写。。

#include <cstdio>
#include <algorithm> const int N = , MO = ; int f[N][N][], sum[N]; inline void add(int &a, const int &b) {
a = (a + b) % MO;
return;
} int main() {
int n, k;
scanf("%d%d", &n, &k);
for(int j = ; j <= n; j++) {
f[][j][] = ;
}
for(int i = ; i <= n; i++) {
for(int j = ; j <= n; j++) {
// f[i][j][0/1]继承前状态
for(int k = ; k < j && i + k <= n; k++) {
add(f[i + k][j][], f[i][j][]);
add(f[i + k][j][], f[i][j][]);
}
if(i + j <= n) {//构造出新的方案
add(f[i + j][j][], f[i][j][]);
add(f[i + j][j][], f[i][j][]);
}
}
} for(int i = ; i <= n; i++)printf("%d ", f[n][i][]);
long long ans = 0LL;
for(int i = ; i <= n; i++)
for(int j = ; (long long)j * i < k && j <= n; j++)
ans = (ans + f[n][i][] * f[n][j][] % MO) % MO;
ans = ans * % MO;
printf("%lld\n", ans);
}

更新:可以把dp[i][j]转换成前缀和来做,最后相减一下就变成了上面的那种dp[i][j]表示的状态

相比上一中感觉更加直观好写,即对于每种状态,枚举k个连续的1放在末尾,然后把对应的之前的状态加上去就可以了

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll; const int N = ;
const ll P = 998244353LL; int n, siz;
ll f[N][N]; inline int min(int x, int y) {
return x > y ? y : x;
} int main() {
scanf("%d%d", &n, &siz); f[][] = 1LL;
for(int i = ; i <= n; i++)
for(int j = ; j <= i; j++)
for(int k = ; k <= j; k++)
f[i][j] = (f[i][j] + f[i - k][min(j, i - k)]) % P;
for(int i = n; i >= ; i--)
f[n][i] = (f[n][i] - f[n][i - ] % P + P) % P; //for(int i = 1; i <= n; i++)printf("%lld ", f[n][i]);
ll ans = 0LL;
for(int i = ; i <= n; i++)
for(int j = ; j * i < siz && j <= n; j++)
ans = (ans + f[n][i] * f[n][j] % P) % P;
ans = ans * % P;
printf("%lld\n", ans); }

最新文章

  1. [译]Google官方关于Android架构中MVP模式的示例
  2. layer.js中layer.tips
  3. 机器学习实战笔记(Python实现)-04-Logistic回归
  4. HDU 1528 贪心模拟/二分图
  5. SSIS 基础知识
  6. Flash的坑之ExternalInterface.call只返回null值的解决办法
  7. MSSQL死锁产生原因及解决方法
  8. a different object with the same identifier value was already associated with **(ssh异常转)
  9. [转]O(n)回文子串算法 Manacher算法
  10. 【python,logging】python中的logging模块
  11. C#_MySql 主从复制
  12. 李洪强iOS开发Swift篇---11_变量&amp;常量&amp;元组
  13. zlog使用手册,小靠谱啊
  14. Octave Tutorial(《Machine Learning》)之第五课《控制语句和方程及向量化》
  15. 【pac4j】OAuth 认证机制 入门篇
  16. 生产者/消费者问题的多种Java实现方式
  17. vertx实例的fileSystem文件系统模块
  18. 【Python全栈-JavaScript】JavaScript的window.onload()与jQuery 的ready()的区别
  19. nltk的使用
  20. Linux命令_1

热门文章

  1. sql基础学习
  2. 3. Image Structure and Generation
  3. 如何在html中添加视频
  4. &lt;Django&gt;一些小知识
  5. Codeforces Round #526 C - The Fair Nut and String /// 组合递推
  6. 字符串KMP算法
  7. Logstash2.3.4趟坑之集成Redis哨兵模式
  8. Linux CentOS 6.7 挂载U盘
  9. 0929CSP-S模拟测试赛后总结
  10. 使用java Graphics 绘图工具生成顺丰快递电子面单