HDU 1260 - Tickets
2017-09-06 15:28
316 查看
题目大意:有n个样例,每个样例中有m个人去买票,如果每个人买一张,时间分别为a1,a2,a3...an秒,如果是二个人一起买票,则从第二个人起与前一个人一起买票,时间为b1,b2 ... bn-1秒。问,n个人买票最少需要多久。
解题思路:dp公式,dp[i] = min(dp[i-1]+a[i], dp[i-1]+b[i])。dp[0]为一个人,是a1,dp[1]是两个人时,是min(a[0]+a[1], b[1])。为了方便b数组从b[1]开始输入。
ac代码:
解题思路:dp公式,dp[i] = min(dp[i-1]+a[i], dp[i-1]+b[i])。dp[0]为一个人,是a1,dp[1]是两个人时,是min(a[0]+a[1], b[1])。为了方便b数组从b[1]开始输入。
ac代码:
#include <iostream> #include <algorithm> using namespace std; int n, m, dp[2005], a[2005], b[2005]; int hour, minu, sec; int main() { scanf("%d", &n); while (n--){ scanf("%d", &m); for (int i=0; i<m; i++) scanf("%d", &a[i]); for (int i=1; i<m; i++) scanf("%d", &b[i]); dp[0] = a[0]; dp[1] = min(a[0] + a[1], b[1]); for (int i=2; i<m; i++) dp[i] = min(dp[i-1]+a[i], dp[i-2]+b[i]); hour = dp[m-1] / 3600 + 8; dp[m-1] = dp[m-1] % 3600; minu = dp[m-1] / 60; dp[m-1] = dp[m-1] % 60; sec = dp[m-1]; if (hour >= 12) printf("%02d:%02d:%02d pm\n", hour, minu, sec); else printf("%02d:%02d:%02d am\n", hour, minu, sec); } return 0; }
相关文章推荐
- HDU 1260 Tickets
- HDU 1260 Tickets 简单DP
- hdu 1260 Tickets(DP)
- HDU 1260 Tickets (很简单的基础DP题,找到状态转移方程就直接AC了)
- [dp专题]hdu 1260 tickets
- HDU-1260 Tickets ( DP )
- HDU 1260 Tickets (动规)
- 【HDU】-1260-Tickets(简单DP)
- hdu 1260 Tickets(dp)
- hdu 1260 Tickets
- HDU 1260 Tickets
- hdu 1260 Tickets
- hdu 1260 Tickets(DP)
- HDU 1260 —— Tickets
- HDU 1260 Tickets
- HDU1260 Tickets(简单dp)
- hdu 1260 (Tickets)
- hdu 1260 Tickets(DP)
- HDU - 1260 Tickets (简单DP)
- [ACM] hdu 1260 Tickets (动态规划)