HDU 1260 Tickets(基础dp)

时间:2023-03-08 16:36:27

  一开始我对这个题的题意理解有问题,居然超时了,我以为是区间dp,没想到是个水dp,我泪奔了....

#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<iostream>
using namespace std; ///本来以为是一个区间dp,结果是个水dp,从前往后选就可以了,选的方式有两种,每次都是最优,结果也最优;
///我还TLE了,0(n*n*n)的复杂度啊
///区间dp其实不对,因为这里的队列有顺序,只能从前向后给票,而区间dp是任意位置合并
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,s[],d[];
int dp[];
scanf("%d",&n);
for(int i = ; i <= n; i++)
scanf("%d",&s[i]);
for(int i = ; i <= n; i++)
scanf("%d",&d[i]);
dp[] = ,dp[] = s[];
for(int i = ; i <= n; i++)
{
dp[i] = min(dp[i-] + s[i],dp[i-]+d[i]);
}
int add = dp[n];
int h = add / + ,hyu = add % ;
int m = hyu / ,ss = hyu % ;
h %= ;
if(h >= )
{
printf("%02d:%02d:%02d pm\n",h%,m,ss);
}
else printf("%02d:%02d:%02d am\n",h,m,ss);
}
return ;
}