博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DP ZOJ 2745 01-K Code
阅读量:6290 次
发布时间:2019-06-22

本文共 1010 字,大约阅读时间需要 3 分钟。

 

题意:要求任意连续子序列中0和1的数量差不超过k的方案数

分析:想好状态其实不难。dp[i][j][k]表示考虑前i长度,后缀中最大的 sum(0) - sum(1) = j, sum (1) - sum (0) = k的方案数,合并以下可以得到最大的|sum(0) - sum(1)| = j + k,所以j+k <= K,最后考虑当前i放0或1就可以转移状态了。

#include 
using namespace std;typedef long long ll;ll dp[66][7][7];int main() { int N, K; while (scanf ("%d%d", &N, &K) == 2) { memset (dp, 0, sizeof (dp)); dp[0][0][0] = 1; for (int i=1; i<=N; ++i) { for (int j=0; j<=K; ++j) { for (int k=0; k<=K; ++k) { if (j + k > K) continue; dp[i][max (j-1, 0)][k+1] += dp[i-1][j][k]; dp[i][j+1][max (k-1, 0)] += dp[i-1][j][k]; } } } ll ans = 0; for (int i=0; i<=K; ++i) { for (int j=0; j<=K; ++j) { if (i + j > K) continue; ans += dp[N][i][j]; } } printf ("%lld\n", ans); } return 0;}

  

转载于:https://www.cnblogs.com/Running-Time/p/5286949.html

你可能感兴趣的文章
js sort()
查看>>
Java环境变量从jdk1.7修改为1.8
查看>>
二分查找/暴力 Codeforces Round #166 (Div. 2) B. Prime Matrix
查看>>
vue项目启动需安装?
查看>>
dedecms 系统的 data/rssmap.html不存在!更新了也没有。。。
查看>>
理解RESTful架构
查看>>
Zookeeper02
查看>>
ASP.NET编译执行常见错误及解决方法汇总之五(终结篇)
查看>>
编译器的工作过程
查看>>
Oracle 12C 新特性之表分区或子分区的在线迁移
查看>>
Centos 安装ixgbe驱动
查看>>
【BZOJ2589】 Spoj 10707 Count on a tree II
查看>>
select2使用时遇到的一些坑(4.x.x以上版本)
查看>>
(转).net中的session与cookies区别及使用方法
查看>>
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
查看>>
rsync同步工具的配置与使用
查看>>
浅谈现公司的Spring Cloud微服务框架
查看>>
【OCP-12c】CUUG 071题库考试原题及答案解析(17)
查看>>
RAC RMAN 备份 RMAN-03009 ORA-19504 ORA-27040 RMAN-06012 channel c3 not allocated 错误分析
查看>>
[转]指针函数与函数指针的区别
查看>>