状态比较容易表示,转移方程比较好想,问题比较基本常见   递推、背包、LIS(最长递增序列),LCS(最长公共子序列)

HDU 2048 数塔

由上往下推 状态数太多(100!) 可以由下往上推:

dp[i][j]=max(dp[i+1][j],dp[i+1][j+1])+dp[i][j])

储存的话就直接一个二维数组a[110][110]

HDU2018 母牛

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

斐波那契数列 递推 线性递归

dp[i]=dp[i-1]+dp[i-3];

HDU2044 一只小蜜蜂

斐波那契数列 递推 线性递归

先发现 n(n>=3)可由n-1及n-2到达 所以递推得到到达n的方法是到达n-1的方法+到达n-2的方法

HDU2050 折线分割平面

①n条直线能把平面分成几部分: 2+2+3+4......递推公式 f(n)=f(n-1)+n

②一个圆与n条直线 这些直线中每一条在圆内同其他直线相交,假设没有3条直线相交于一点,试问这些直线将圆分成多少区域:

与①相同

现在看下本题 平面的部分数与顶点即直线的交点有关 n=1时有2条线1个交点 部分为2 n=2时有3有4条线6个交点部分为7 所以n=n-1时有 2*(n-1)条线所以n=n时可增加2*2*(n-1)+1(本身的顶点)个部分

即递推公式为 f(n)=f(n-1)+4*(n-1)+1;

codeforces 429B B. Working out

先处理出从左上到右下的最大值和左下到右上的最大值然后枚举交点和进出的方向

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int dp1[][],dp2[][],dp3[][],dp4[][];
int ans[][];
//(1,1)->(i,j)+(i,j)->(n,m)+(n,1)->(i,j)+(i,j)->(1,m);
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%d",&ans[i][j]);
}
}
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
dp1[i][j]=max(dp1[i-][j],dp1[i][j-])+ans[i][j];
}
}
for(int i=n;i>=;i--){
for(int j=m;j>=;j--){
dp2[i][j]=max(dp2[i+][j],dp2[i][j+])+ans[i][j];
}
}
for(int i=;i<=n;i++){
for(int j=m;j>=;j--){
dp3[i][j]=max(dp3[i-][j],dp3[i][j+])+ans[i][j];
}
}
for(int i=n;i>=;i--){
for(int j=;j<=m;j++){
dp4[i][j]=max(dp4[i][j-],dp4[i+][j])+ans[i][j];
}
}
int cnt=;
for(int i=;i<n;i++){
for(int j=;j<m;j++){
cnt=max(cnt,dp1[i-][j]+dp2[i+][j]+dp3[i][j+]+dp4[i][j-]);
cnt=max(cnt,dp1[i][j-]+dp2[i][j+]+dp3[i-][j]+dp4[i+][j]);
}
}
printf("%d\n",cnt);
return ;
}

基础简单DP的更多相关文章

  1. [Usaco2008 Mar]River Crossing渡河问题[简单DP]

    Description Farmer John以及他的N(1 <= N <= 2,500)头奶牛打算过一条河,但他们所有的渡河工具,仅仅是一个木筏. 由于奶牛不会划船,在整个渡河过程中,F ...

  2. 『简单dp测试题解』

    这一次组织了一场\(dp\)的专项考试,出了好几道经典的简单\(dp\)套路题,特开一篇博客写一下题解. Tower(双向dp) Description 信大家都写过数字三角形问题,题目很简单求最大化 ...

  3. 简单dp总结

    ### 简单dp总结 本文是阅读<挑战程序设计第二版>其中关于dp章节所作总结.将简要描述dp的部分知识. 一.dp是什么? dp在计算机专业学科中全称是动态规划(dynamic prog ...

  4. 关于一些基础的dp——硬币的那些事(dp的基本引入)

    1.最少硬币问题大体题意: 有n种硬币,面值分别是v1,v2......vn,数量无限,输入一个非负整数s,选用硬币使其和为s,要求输出最少的硬币组合. 我们可以这样分析: 定义一个名为Min[s]的 ...

  5. HDU 1087 简单dp,求递增子序列使和最大

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  6. Codeforces Round #260 (Div. 1) A. Boredom (简单dp)

    题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...

  7. codeforces Gym 100500H A. Potion of Immortality 简单DP

    Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...

  8. 简单dp --- HDU1248寒冰王座

    题目链接 这道题也是简单dp里面的一种经典类型,递推式就是dp[i] = min(dp[i-150], dp[i-200], dp[i-350]) 代码如下: #include<iostream ...

  9. poj2385 简单DP

    J - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     64bit ...

随机推荐

  1. Django-Form组件-formset_factory

    Formset 多个表单的集合,可以同时提交多个from表单中的数据,在web页面中,可以在同一个页面,提交多个form表单. Django针对不同的formset提供了3种方法: formset_f ...

  2. tf.metrics.sparse_average_precision_at_k 和 tf.metrics.precision_at_k的自己理解

    tensorflow最大的问题就是大家都讲算法,不讲解用法,API文档又全是英文的,看起来好吃力,理解又不到位.当然给数学博士看的话,就没问题的. 最近看了一系列非常不错的文章,做一下记录: http ...

  3. 【miscellaneous】VLC组播与接收

    搭建组播服务器  第一步:运行程序后选择"媒体--串流": 第二步:通过"添加"选择需要播放的文件(以wmv文件为例),单击"串流": 第三 ...

  4. 【VS开发】VSTO 学习笔记(十)Office 2010 Ribbon开发

    微软的Office系列办公套件从Office 2007开始首次引入了Ribbon导航菜单模式,其将一系列相关的功能集成在一个个Ribbon中,便于集中管理.操作.这种Ribbon是高度可定制的,用户可 ...

  5. Cookie中的httponly的属性和作用

    1.什么是HttpOnly? 如果cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击,窃取cookie内容,这样就增加了cookie的安 ...

  6. ZOJ Problem Set - 1008

    1.翻译及思路 http://blog.csdn.net/dapengbusi/article/details/7313785 http://acm.sdut.edu.cn/bbs/read.php? ...

  7. pramfs安装

    1. 拷贝 linux-3.11 pramfs-1.5.0-3.11 pramfs-Tools 到电脑中(我是新建目录linux中) 2.解压 3.cd pramfs-1.5.0-3.11/ 4.将p ...

  8. IDEA连接 Oracle数据库

    package com.zxx.util;import org.apache.commons.dbutils.DbUtils;import java.sql.Connection;import jav ...

  9. js,bom,dom(相信我,你看不懂我写的)

    js dom bom 2种结合方式: 1.在body中加入script标签,<script type="text/javascript" >alert(" 向 ...

  10. Codeforces 1236A. Stones

    传送门 注意到两种操作都要消耗中间的石头,并且两种操作每次都会得到 $3$ 个石头 那么显然优先做操作二是最优的,因为操作二只会消耗中间堆的一个石头 如果有剩下再进行操作 $1$ ,那么可以保证总操作 ...