HDU 1260
Posted llguanli
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1260相关的知识,希望对你有一定的参考价值。
题意:给出一些人买票的时间,能够一个人买。也能够相邻两人一起买,求全部人买完票的最短时间。
思路:一维DP,dp[i]表示第i个人买票所须要的时间。这个人能够和前一个人一起买,也能够自己买。
状态转移方程:dp[i]=min(dp[i-1]+t1[i],dp[i-2]+t2[i-1]),然后再注意初始化和对时间的处理即可了。
AC代码:
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; #define inf 0x7ffffff int main() { int n,t1[2010],t2[2010],dp[2010]; int t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++) dp[i]=inf; for(int i=1;i<=n;i++) scanf("%d",&t1[i]); for(int i=1;i<=n-1;i++) scanf("%d",&t2[i]); dp[1]=t1[1]; for(int i=2;i<=n;i++) { dp[i]=min(dp[i-1]+t1[i],dp[i-2]+t2[i-1]); } // printf("%d\n",dp[n]); int h=dp[n]/3600; int m=dp[n]%3600/60; int s=dp[n]%60; printf("%02d:%02d:%02d ",(h+8)%24,m,s); if((h+8)%24>12) printf("pm\n"); else printf("am\n"); } return 0; }
以上是关于HDU 1260的主要内容,如果未能解决你的问题,请参考以下文章