HDU1267 递推
题意:给定m个H和n个D(1<=n,m<=20),问这些字母构成的序列中,对于任意位置,从左开始数H的累积个数总是不比D的累计数少的排列有多少种。
题解:二维DP,画一个正方形,从左上角到右下角画一条线,右上方区域就是我们所要求的。另外注意这个题的输入顺序是先输入m再输入n。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dp[][];
int n,m;
void init()
{
memset(dp,,sizeof(dp));
for(int j=; j<=; j++) dp[][j]=;
for(int i=; i<=; i++)
for(int j=i; j<=; j++)
dp[i][j]=dp[i-][j]+dp[i][j-];
}
int main()
{
init();
while(cin>>m>>n)
cout<<dp[n][m]<<endl;
return ;
}
虽然知道深搜2^40会超时,但还是用深搜写了一发。
#include <bits/stdc++.h>
using namespace std;
int n,m,x,ans,data[];
void dfs(int k,int n,int m)
{
if(k==x)
{
int tmp=;
for(int i=; i<k; i++)
{
tmp+=data[i];
if(!data[i]) tmp--;
if(tmp<) return;
}
if(tmp>=)
{
//for(int i=0; i<k; i++) printf("%d ",data[i]);
//printf("*\n");
ans++;
}
//memset(data,0,sizeof(data));
return;
}
if(n>)
{
data[k]=; n--;
dfs(k+,n,m);
n++;//这个一定要放到里面
} if(m>)
{
data[k]=; m--;
dfs(k+,n,m);
m++;
}
}
int main()
{
while(cin>>m>>n)
{
memset(data,,sizeof(data));
x=n+m;
ans=;
dfs(,n,m);
cout<<ans<<endl;
}
return ;
}

貌似这道题还可以用公式算:传送门。
HDU1267 递推的更多相关文章
- HDU2067/HDU1267 /HDU1130 递推
小兔的棋盘 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- 【BZOJ-2476】战场的数目 矩阵乘法 + 递推
2476: 战场的数目 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 58 Solved: 38[Submit][Status][Discuss] D ...
- 从一道NOI练习题说递推和递归
一.递推: 所谓递推,简单理解就是推导数列的通项公式.先举一个简单的例子(另一个NOI练习题,但不是这次要解的问题): 楼梯有n(100 > n > 0)阶台阶,上楼时可以一步上1阶,也可 ...
- Flags-Ural1225简单递推
Time limit: 1.0 second Memory limit: 64 MB On the Day of the Flag of Russia a shop-owner decided to ...
- 利用Cayley-Hamilton theorem 优化矩阵线性递推
平时有关线性递推的题,很多都可以利用矩阵乘法来解决. 时间复杂度一般是O(K3logn)因此对矩阵的规模限制比较大. 下面介绍一种利用利用Cayley-Hamilton theorem加速矩阵乘法的方 ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- 简单递推 HDU-2108
要成为一个ACMer,就是要不断学习,不断刷题...最近写了一些递推,发现递推规律还是挺明显的,最简单的斐波那契函数(爬楼梯问题),这个大家应该都会,看一点稍微进阶了一点的,不是简单的v[i] = v ...
- [ACM_动态规划] 数字三角形(数塔)_递推_记忆化搜索
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> ...
- 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式
矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b * A B = a*A+b*C a*c+b*D c d ...
随机推荐
- opencv笔记1:opencv的基本模块,以及环境搭建
opencv笔记1:opencv的基本模块,以及环境搭建 安装系统 使用fedora22-workstation-x86_64 安装opencv sudo dnf install opencv-dev ...
- java反射学习
通过一个对象获得完整的包名和类名 package reflect; public class GetClass { public static void main(String[] args) { G ...
- 获取IplImage 数据并打印
int main(int argc, char* argv[]){ IplImage *img=cvLoadImage("c://fruitfs.bmp",1); CvSca ...
- Put-Me-Down项目Postmortem
设想和目标 PMD是一款帮助低头族控制使用手机时间的APP,设想按照需求规格说明书内容实现功能,能将数据备份到服务器. 计划 初始计划我们是想将程序方面分为安卓和后台,主要是程序方面的工作.我们对项目 ...
- Jquery easyui datagrid 删除多行问题
http://www.cnblogs.com/Dtscal/archive/2012/07/04/2576639.html 最近模仿了刘冬大哥的<开源框架完美组合之Spring.NET + NH ...
- cmd+lcx+nc+sc提权工具总结
cmd:执行命令的载体cmdshell lcx:端口映射工具 1.在自己的host上的cmd下运行:lcx.exe -listen 51 3389 //意思是监听51端口并转发到3389端口 2.在服 ...
- C#实现AES加解密方法
using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptograph ...
- CF360B Levko and Array (二分查找+DP)
链接:CF360B 题目: B. Levko and Array time limit per test 2 seconds memory limit per test 256 megabytes i ...
- jsp 变量和方法的声明 Java程序片 HTML注释 JSP注释
<%!...%> 声明变量和方法 <%!...%>之中的变量为JSP页面的成员变量,当多个线程访问本页面时,多个线程共享此变量. <%@ page contentType ...
- Tautology(structure)
Tautology Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10061 Accepted: 3826 Descri ...