zoukankan      html  css  js  c++  java
  • hdu 1260 dp

    View Code
    //hdu 1260  dp
    
    //题目说如何最快让每个人买到票,每组数据给出
    //第一行:多少人买票(k),第二行:每个人买自己的一张票的时间(k个数),
    //第三行:连续两个人一起买票的时间(比如 第一个数表示第一个人和
    //第二个人一起买的时间,第二个数表示第二个人和第三个人一起的时间...(k-1个数))
    
    //思路:dp[i]表示 到第i 个人买票的最少时间
    //因此 dp[i] = min{ dp[i-1] + 第i 个人买票时间, dp[i-2] + (第i-1个人和第i一起买票的时间) }
    //这样只要知道 dp[i-1] 和dp[i-2] 就可以了,因此可以用滚动数组优化空间
    
    #include <stdio.h>
    #include <string.h>
    
    #define N 2005
    
    int one[N], two[N], dp[3];
    
    int main()
    {
        int n_case, n_tick;
        scanf("%d", &n_case);
        while(n_case--)
        {
            scanf("%d", &n_tick);
    
            for(int i = 1; i <= n_tick; ++i)
                scanf("%d", &one[i]);
    
            for(int i = 1; i < n_tick; ++i)
                scanf("%d", &two[i]);
    
            dp[0] = 0;
            dp[1] = one[1];
            for(int i = 2; i <= n_tick; ++i)
            {   //记录到 第 i-1 个人的最少时间 加上 i 买票的时间
                int tmp = dp[(i-1) % 3] + one[i];
    
                //记录到 第 i-2 个人的最少时间 加上 (第i-1 个人 和 第i个人一起买票的时间)
                int now = dp[(i-2) % 3] + two[i-1];
    
                if(now < tmp)   //判断哪一种方式买票最省时间
                    dp[i%3] = now;
                else
                    dp[i%3] = tmp;
    //            int tmp = dp[i-1] + one[i];
    //            if(dp[i - 2] + two[i-1] < tmp)
    //                dp[i] = dp[i-2] + two[i-1];
    //            else
    //                dp[i] = tmp;
            }
            int h, m, s;
            s = dp[n_tick%3] % 60;
            m = (dp[n_tick%3] / 60) % 60;
            h = (dp[n_tick%3] / 60 / 60) % 60 + 8;
    //        s = dp[n_tick] % 60;
    //        m = (dp[n_tick] / 60) % 60;
    //        h = (dp[n_tick] / 60 / 60) % 60 + 8;
    
            //注意输出格式
            printf("%02d:%02d:%02d ", h, m, s);
            if(h < 12 || !(m+s))    //12:00以前或12:00:00为am
                puts("am");
            else
                puts("pm");
        }
        return 0;
    }
  • 相关阅读:
    jquery基本用法
    js里BOM和DOM操作
    js基础语法
    java将json格式的字符串转化为对象数组
    Java生成Excel并导入数据
    mybatis的xml中使用foreach循环拼接(sql中的 in 语法)
    FreeMarker在List中取任意一条数据的某一个值
    freemarker中的常用语法
    Java将日期转化为大写格式(阿拉伯大写数字)
    项目中出现The import javax.servlet cannot be resolved 的解决方法
  • 原文地址:https://www.cnblogs.com/gabo/p/2452618.html
Copyright © 2011-2022 走看看