• HDU 4540 威威猫系列故事——打地鼠 (DP)


    威威猫系列故事——打地鼠

    Time Limit: 300/100 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
    Total Submission(s): 1642    Accepted Submission(s): 807


    Problem Description
      威威猫最近不务正业,每天沉迷于游戏“打地鼠”。
      每当朋友们劝他别太着迷游戏,应该好好工作的时候,他总是说,我是威威猫,猫打老鼠就是我的工作!
      无话可说...
      
      我们知道,打地鼠是一款经典小游戏,规则很简单:每隔一个时间段就会从地下冒出一只或多只地鼠,玩游戏的人要做的就是打地鼠。

      假设:
      1、每一个时刻我们只能打一只地鼠,并且打完以后该时刻出现的所有地鼠都会立刻消失;
      2、老鼠出现的位置在一条直线上,如果上一个时刻我们在x1位置打地鼠,下一个时刻我们在x2位置打地鼠,那么,此时我们消耗的能量为abs( x1 - x2 );
      3、打第一只地鼠无能量消耗。

      现在,我们知道每个时刻所有冒出地面的地鼠位置,若在每个时刻都要打到一只地鼠,请计算最小需要消耗多少能量。
     
    Input
    输入数据包含多组测试用例;
    每组数据的第一行是2个正整数N和K(1 <= N <= 20, 1 <= K <= 10 ),表示有N个时刻,每个时刻有K只地鼠冒出地面;
    接下来的N行,每行表示一个时刻K只地鼠出现的坐标(坐标均为正整数,且<=500)。
     
    Output
    请计算并输出最小需要消耗的能量,每组数据输出一行。
     
    Sample Input
    2 2 1 10 4 9 3 5 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15
     
    Sample Output
    1 1
     
    Source
     
    Recommend
    liuyiding
     
    DP水题,dp[i][j]代表打第i层第j个地鼠消耗的最小能量。
    暴力枚举更新每一层消耗的能量。
     
    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<stdlib.h>
    #include<algorithm>
    using namespace std;
    const int MAXN=20+5;
    int num[MAXN][MAXN],dp[MAXN][MAXN];
    int main()
    {
        int n,k;
        while(scanf("%d %d",&n,&k)!=EOF)
        {
            memset(dp,0,sizeof(dp));
            memset(num,0,sizeof(num));
    
            for(int i=0;i<n;i++)
                for(int j=0;j<k;j++)
                    scanf("%d",&num[i][j]);
    
            for(int i=1;i<n;i++)
                for(int j=0;j<k;j++)
                    for(int l=0;l<k;l++)
                    {
                        if(l==0)
                            dp[i][j]=dp[i-1][l]+(abs(num[i-1][l]-num[i][j]));
                        else
                            dp[i][j]=min(dp[i-1][l]+abs(num[i-1][l]-num[i][j]),dp[i][j]);
                    }
    
            int minn=0x3f3f3f3f;
            for(int i=0;i<k;i++)
                if(dp[n-1][i]<minn)
                    minn=dp[n-1][i];
    
            printf("%d
    ",minn);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    Java 8 Lambda 表达式
    OSGi 系列(十二)之 Http Service
    OSGi 系列(十三)之 Configuration Admin Service
    OSGi 系列(十四)之 Event Admin Service
    OSGi 系列(十六)之 JDBC Service
    OSGi 系列(十)之 Blueprint
    OSGi 系列(七)之服务的监听、跟踪、声明等
    OSGi 系列(六)之服务的使用
    OSGi 系列(三)之 bundle 事件监听
    OSGi 系列(三)之 bundle 详解
  • 原文地址:https://www.cnblogs.com/clliff/p/4029577.html
Copyright © 2020-2023  润新知