dp训练计划——hdu1260简单dp

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260

题目大意:

现在有n个人要买电影票,如果知道每个人单独买票花费的时间,还有和前一个人一起买花费的时间,问最少花多长时间可以全部买完票。

Input

给出 N(1<=N<=10),表示有N组样例     

给出K (1<=K<=2000),表示有K个人买票..     

给出K个数表示这个人单独买票会花的时间..保证每个数 (0s<=Si<=25s)     

给出K-1个数,表示这个人和前面那个人一起买票会花的时间..保证每个数 (0s<=Si<=50s)

Output

对于每一组数据,你需要给出电影院售票结束的时间,售票开始的时间为 08:00:00 am. 时间格式为: HH:MM:SS am|pm. 具体看样例输出

Sample Input

2
2
20 25
40
1
8

Sample Output

08:00:40 am
08:00:08 am

题解:

不难想出状态为dp[i]表示前i个人买票的最短时间.

dp[i]=min(dp[i-2]+b[i],dp[i-1]+a[i])

即表示要么选择第i-1个人和第i个人一起买,要么选择第i个人单独买。

 然后总秒数就是dp[n],在进行一下时间转换就行了。

代码实现:

#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<stack>
#include<queue>
#define PI atan(1.0)*4
#define E 2.718281828
#define rp(i,s,t) for (register int i = (s); i <= (t); i++)
#define RP(i,t,s) for (register int i = (t); i >= (s); i--)
#define ll long long
#define ull unsigned long long
#define mst(a,b) memset(a,b,sizeof(a))
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define pii pair<int,int>
#define mp make_pair
#define pb push_back
#define debug printf("ac\n");
using namespace std;
inline int read()
{
    int a=0,b=1;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        if(c=='-')
            b=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9')
    {
        a=(a<<3)+(a<<1)+c-'0';
        c=getchar();
    }
    return a*b;
}
const int INF = 0x3f3f3f3f;
const int N = 1e5+7;
int dp[N],a[N],b[N];
int main(){
    int T=read();
    while(T--){
        int n=read();
        rp(i,1,n) a[i]=read();
        rp(i,2,n) b[i]=read();
        mst(dp,INF);
        dp[0]=0,dp[1]=a[1];
        rp(i,2,n) dp[i]=min(dp[i-2]+b[i],dp[i-1]+a[i]);
        int ans=dp[n];
        // cout<<dp[n]<<endl;
        if((8+ans/3600)%24<=12&&(8+ans/3600)%24>=0) printf("%02d:%02d:%02d am\n",(8+ans/3600)%24,ans/60%60,ans%60);
        else printf("%02d:%02d:%02d pm\n",(8+ans/3600)%24,ans/60%60,ans%60);
    }
    return 0;
}
/*
1 7
3
3 3
6 6
2 2 
*/  
发布了342 篇原创文章 · 获赞 220 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43472263/article/details/104603260