做水题的感觉真好系列

HDU 2084 数塔

1: 1
2: 1 2
3: 1 2 3
4: 1 2 3 4
5: 1 2 3 4 5
dp[i][j]第i行第j个数取得的最大值
dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + a[i][j]。

代码:

/*********************************************************
Problem : 2084 ( 数塔 )     Judge Status : Accepted
RunId : 14525016    Language : G++    Author : G_lory
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
**********************************************************/
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int a[105][105];
int dp[105][105];
int N;

void solve()
{
    for (int i = 1; i <= N; ++i) {
        for (int j = 1; j <= i; ++j) {
            dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - 1]) + a[i][j];
        }
    }
    int ans = dp[N][1];
    for (int i = 2; i <= N; ++i) {
        ans = max(ans, dp[N][i]);
    }
    printf("%d\n", ans);
}

int main()
{
    int t;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &N);
        for (int i = 1; i <= N; ++i)
            for (int j = 1; j <= i; ++j)
                scanf("%d",&a[i][j]);
        solve();
    }
    return 0;
} 

HDU 2044 一只小蜜蜂...

Fibonacci数列。

代码:

/*********************************************************
Problem : 2044 ( 一只小蜜蜂... )     Judge Status : Accepted
RunId : 14532121    Language : G++    Author : G_lory
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
*********************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

typedef long long ll;
ll dp[55];

void init()
{
    dp[0] = dp[1] = 1;

    for (int i = 2; i <= 50; ++i)
        dp[i] = dp[i - 1] + dp[i - 2];
}

int main()
{
    init();
    int t, a, b;
    scanf("%d", &t);
    while (t--) {
        scanf("%d%d", &a, &b);
        printf("%lld\n", dp[b - a]);
    }
    return 0;
}

  

HDU 2041 超级楼梯

同上题。

代码:

/********************************************************
Problem : 2041 ( 超级楼梯 )     Judge Status : Accepted
RunId : 14532404    Language : G++    Author : G_lory
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
*********************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

typedef long long ll;
ll dp[45];

void init()
{
    dp[1] = dp[2] = 1;

    for (int i = 3; i <= 40; ++i)
        dp[i] = dp[i - 1] + dp[i - 2];
}

int main()
{
    init();
    int t, a;
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &a);
        printf("%lld\n", dp[a]);
    }
    return 0;
}

  

HDU 2050 折线分割平面

一开始思路就错了,想的是一条直线最大的切割方法是把所有的面的切成两半,当然那是不可能的,最优的方法是把每条已有直线分成两段,这样该直线被已有直线分成已有直线条数+1的段,每一段把所在区域分成两半。

如果是折线,就把原有区域以最优的方式分解两次,注意两次方式相同,不能先分一次,在把第一部分的结果计算进去划第二次。因为是折线,在两条直线划分的基础上要连起来一端,所以少了1个区域。

dp[i] = dp[i-1]+((i-1)*2+1)*2-1; (我竟然忘了怎么通过递推公式求通项 = =……

(i-1)*2 原有直线(一条折线看成两条直线)条数。

((i-1)*2+1) 新加一条线段,被切割成多少分,也就是新加一条线段,多几个区域。

((i-1)*2+1)*2 因为是折线,相当于多加两条线段。

((i-1)*2+1)*2-1 折线会因为合并起来那一端减少一个区域。

代码:

/*********************************************************
Problem : 2050 ( 折线分割平面 )     Judge Status : Accepted
RunId : 14533258    Language : G++    Author : G_lory
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta
*********************************************************/
#include <iostream>
#include <cstdio>
using namespace std;

int dp[10005];

void init()
{
    dp[0] = 1;
    dp[1] = 2;
    for (int i = 2; i <= 10000; ++i) {
        //dp[i] = dp[i - 1] + ((i - 1) * 2 + 1) * 2 - 1;
        dp[i] = dp[i - 1] + 4 * i - 3;
    }
}

int main()
{
    int t, n;
    init();
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        printf("%d\n", dp[n]);
    }
    return 0;
}

  

动态规划之HDU水题的更多相关文章

  1. Let the Balloon Rise HDU水题

    题意 让你统计字符串最多的那个串,并输出 分析 直接用map统计,不断更新最大值即可 代码 #include<iostream> #include<algorithm> #in ...

  2. hdu 2393:Higher Math(计算几何,水题)

    Higher Math Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  3. HDU 5832 A water problem(某水题)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  4. HDU 2096 小明A+B --- 水题

    HDU 2096 /* HDU 2096 小明A+B --- 水题 */ #include <cstdio> int main() { #ifdef _LOCAL freopen(&quo ...

  5. [HDU 2602]Bone Collector ( 0-1背包水题 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 水题啊水题 还给我WA了好多次 因为我在j<w[i]的时候状态没有下传.. #includ ...

  6. HDU 5578 Friendship of Frog 水题

    Friendship of Frog Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...

  7. HDU 5590 ZYB's Biology 水题

    ZYB's Biology Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid ...

  8. HDU 5832 A water problem (带坑水题)

    A water problem 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5832 Description Two planets named H ...

  9. HDU 5538 L - House Building 水题

    L - House Building Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.ph ...

随机推荐

  1. RAC,客户端连接失败ORA-12514

    今天上午,某项目运维组的同事过来求助:"某系统的应用有问题了,WEB页面打开以后出现ORACLE的ORA-12514错误,貌似监听有问题了!" 该系统的数据是采用RAC部署的模式, ...

  2. 【gradle】 入门

    robin@robin-PC2 /D/JavaWorkSpace/payment/alipay-wap (master)$ ./gradlew idea

  3. WIN32api总结

    1.鼠标操作: win32api.SetCursorPos((101,156)) win32api.mouse_event(win32con.MOUSEEVENT_LEFTDOWN,0,0,0,0) ...

  4. AVQueuePlayer,备用

    想要视频一个接一个的无缝连续播放么?还在用二逼的mpmovieplayercontroller么?太out了!本大仙介绍一个可以实现无缝连续播放视频的东西-------AVQueuePlayer ! ...

  5. Ajax简单实现文件异步上传的多种方法

    1. 认识FormData对象 FormData是Html5新加进来的一个类,可以模拟表单数据 构造函数 FormData (optional HTMLFormElement form) (可选) 解 ...

  6. cxf2.4.3中jaxb-api.jar、jaxws-api.jar与jdk1.6.0_02不兼容问题

    http://chxiaowu.iteye.com/blog/1243475 Exception in thread "main" java.lang.NoClassDefFoun ...

  7. Maven引入依赖后自动下载并关联源码(Source)

    好多用 Maven 的时候会遇到这样一个棘手的问题: 就是添加依赖后由于没有下载并关联源码,导致自动提示无法出现正确的方法名,而且不安装反编译器的情况下不能进入方法内部看具体实现 . 其实 eclip ...

  8. [jobdu]不用加减乘除做加法

    使用异或和与,模拟机器的加法.http://blog.csdn.net/htyurencaotang/article/details/11125415 #include <iostream> ...

  9. NHibernate与EF(Entity Framework)的区别

    http://www.cnblogs.com/lukun/archive/2011/05/16/2047587.html NHibernate与EF(Entity Framework)的区别 http ...

  10. USB Type-C,接口上的大统一?

    这款 24-pin 连接器的机械设计反应了设计人员从 Micro-B 连接器上获得的历史教训,它无需确定插入的正反方向并可实现 10000 次的插拔.使用者再也不需要担心“哪头上,哪头下”,因为 US ...