hdu1260Tickets

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

dp[i]为到第i个人买完票花费的时间。

每次决策两种选择,自己买自己的或者前一个人替自己买。即 dp[i]=min(dp[i-2]+co[i-1],dp[i-1]+p[i]);  

哈哈发现稍微做几个题就有点感觉了。虽然做的都是很简单的题吧,慢慢来。。。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int maxn=2010;
 6 int dp[maxn];
 7 int p[maxn],co[maxn];
 8 int n;
 9 int main()
10 {
11     int t;
12     scanf("%d",&t);
13     while(t--)
14     {
15         scanf("%d",&n);
16         for(int i=1;i<=n;i++)
17             scanf("%d",&p[i]);
18         for(int i=1;i<=n-1;i++)
19             scanf("%d",&co[i]);
20         memset(dp,0,sizeof(dp));
21         dp[1]=p[1];
22         for(int i=2;i<=n;i++)
23             dp[i]=min(dp[i-2]+co[i-1],dp[i-1]+p[i]);//自己买或者前一个人代买
24         int s=dp[n];
25         int m=s/60;
26         int h=m/60+8;
27             m%=60;
28             s%=60;
29         if(h<12) printf("%02d:%02d:%02d am
",h,m,s);
30         else printf("%02d:%02d:%02d pm
",h%12,m,s);
31 
32 
33     }
34 
35 }
原文地址:https://www.cnblogs.com/yijiull/p/6608021.html