题意:给出m,序列第i位是第i-1位的至少2倍大,的求长度为n且每一位范围均在1-m的序列方案数
对求方案数做不到信手拈来的感觉,需要加强
用简单的预处理和最优子结构能优化到很不错的效率了

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#include<map>
#define rep(i,j,k) for(register int i=j;i<=k;i++)
#define rrep(i,j,k) for(register int i=j;i>=k;i--)
#define erep(i,u) for(register int i=head[u];~i;i=nxt[i])
#define iin(a) scanf("%d",&a)
#define lin(a) scanf("%lld",&a)
#define din(a) scanf("%lf",&a)
#define s0(a) scanf("%s",a)
#define s1(a) scanf("%s",a+1)
#define print(a) printf("%lld",(ll)a)
#define enter putchar('\n')
#define blank putchar(' ')
#define println(a) printf("%lld\n",(ll)a)
#define IOS ios::sync_with_stdio(0)
using namespace std;
const int maxn = 1e3+11;
const int oo = 0x3f3f3f3f;
const double eps = 1e-7;
typedef long long ll;
ll read(){ll x=0,f=1;register char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f;
}
ll dp[12][6666];//长度为i的第i位大小为j的方案数 //ans:dp[n][1..m]
//dp[i][j]=Σdp[i-1][1...j/2]
ll sum[6666];
int main(){int T=read(),kase=0;rep(i,1,2000) dp[1][i]=1;rep(i,2,10){rep(j,1,2000){sum[j]=sum[j-1]+dp[i-1][j];dp[i][j]=sum[j/2];}}while(T--){int n=read();int m=read();ll ans=0;rep(i,1,m) ans+=1ll*dp[n][i];printf("Case %d: n = %d, m = %d, # lists = %lld\n",++kase,n,m,ans);}return 0;
}

转载于:https://www.cnblogs.com/caturra/p/8511997.html

ZOJ - 2402 DP方案数相关推荐

  1. Party at Hali-Bula(树形DP+判断方案数是否唯一)

    Party at Hali-Bula UVA - 1220 题意:  公司里有n(n<=200)个人形成一个树状结构, 要求尽量选多的人,但不能同时选择一个人和他的直属上司,文最多能选多少人,以 ...

  2. 【NOIP模拟】T2 管道(状压dp求图的dfs序方案数)

    f[i][j]: i表示整个图走没走过的状态 j表示当前到了第j个点 存的值就是在这种情形下 可以走到的地方的状态 dp[i][j]:i表示整个图走没走过的状态 j表示当前在j点 访问剩余能去到的点的 ...

  3. LeetCode 1569. 将子数组重新排序得到同一个二叉查找树的方案数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 nums 表示 1 到 n 的一个排列. 我们按照元素在 nums 中的顺序依次插入一个初始为空的二叉查找树(BST). 请你统计将 num ...

  4. LeetCode 1444. 切披萨的方案数(DP)

    1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: 'A' (表示苹果)和 '.' (表示空白格子). 你需要切披萨 k-1 次,得到 k 块披萨并送给别 ...

  5. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 "低价购买"这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:"低价购买:再低价购买".每次你购买一支股 ...

  6. hdu 6578 Blank dp求 给定区间中数字不同的方案数

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 给你n个空的数列位置和k条限制,要你用0 1 2 3四个数字,每条限制由l r x组成, ...

  7. 切披萨n块需要几刀原理c语言,LeetCode 1444. 切披萨的方案数(DP)

    1. 题目 给你一个 rows x cols 大小的矩形披萨和一个整数 k ,矩形包含两种字符: 'A' (表示苹果)和 '.' (表示空白格子). 你需要切披萨 k-1 次,得到 k 块披萨并送给别 ...

  8. dp(十一)填满背包方案数

    目录 LintCode 炼码物品大小不重复的填满背包的方案数 LintCode 炼码 物品大小存在重复情况 LintCode 炼码不重复的组合个数 完全背包_牛客题霸_牛客网 LintCode 炼码物 ...

  9. 有向图的强联通分量之:【求最长链】【求最长链的方案数(图论中的方案数DP)】【最长链和最大半联通子图 节点数相同】【最长链与最大半联通子图等价又不完全等价】

    注意了: 最长链与最大半联通子图是等价又不完全等价的. 最大半联通子图的节点数 会 与最长链的节点数相同, 但是边数的话,最大半联通子图还是会加进 两个点之间的所有边 但是本题的主要目的是求 最长链上 ...

  10. ★ZOJ 3380 Patchouli's Spell Cards 详细题解 (递推+组合数求方案数)

    Patchouli's Spell Cards Time Limit: 7 Seconds      Memory Limit: 65536 KB Patchouli Knowledge, the u ...

最新文章

  1. 通用的底层埋点都是怎么做的?
  2. Spring MVC常用注解--“姐妹花”@RequestBody和@ResponseBody
  3. cenotos 卸载mysql_CentOS 6.2编译安装Nginx1.0.12+MySQL5.5.21+PHP5.3.10 | 系统运维
  4. cocos2d-x游戏实例(26)-简易动作游戏(4)
  5. 朴素贝叶斯趣味挑战项目
  6. java headless_使用Chrome Headless 快速实现java版数据的抓取
  7. mac最好用的markdown_「建议收藏」PCMaclinux,最好用Markdown编辑器清单
  8. gin的Bindxxx和ShouldBindxxx的区别
  9. mysql合并多条纪录字段_mysql合并多条记录的单个字段去一条记录
  10. eslint的安装与使用
  11. 20个令人称赞的以办公环境为背景的网站作品
  12. Ubuntu13.04配置优化(一)转贴
  13. 原码, 反码, 补码
  14. jqGrid 项目总结
  15. HTTP权威指南-概述
  16. @Autowired注解位置、@Autowired与@Resource的区别与注入流程
  17. 挺准的皮肤检测皱纹问答测试题
  18. STM32学习过程一
  19. excel去除重复处理
  20. Python快速复制粘贴ins数据,采集网站内视频内容

热门文章

  1. win8.1硬盘安装ubuntu14.04双系统
  2. hadoop的学习之一
  3. Ant—Ant标签解释
  4. vsCode配置通过Github同步(Settings Sync)
  5. 多窗口文件管理软件 Q_Dir
  6. 38. 遵循按照值传递的原则来设计函数子类
  7. 带你了解HTTP协议(二)
  8. 08.Prevent exceptions from leaving destructors
  9. Hibernate之复合主键映射
  10. c语言程序改错:求两个整数的最小公倍数,【C语言】求两个整数的最大公约数、最小公倍数...