hdu 1260 Tickets
2012-10-17 22:51
246 查看
题目描述:
Total Submission(s): 560 Accepted Submission(s): 280
[align=left]Problem Description[/align]
Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early as
possible.
A good approach, reducing the total time of tickets selling, is let adjacent people buy tickets together. As the restriction of the Ticket Seller Machine, Joe can sell a single ticket or two adjacent tickets at a time.
Since you are the great JESUS, you know exactly how much time needed for every person to buy a single ticket or two tickets for him/her. Could you so kind to tell poor Joe at what time could he go back home as early as possible? If so, I guess Joe would full
of appreciation for your help.
[align=left]Input[/align]
There are N(1<=N<=10) different scenarios, each scenario consists of 3 lines:
1) An integer K(1<=K<=2000) representing the total number of people;
2) K integer numbers(0s<=Si<=25s) representing the time consumed to buy a ticket for each person;
3) (K-1) integer numbers(0s<=Di<=50s) representing the time needed for two adjacent people to buy two tickets together.
[align=left]Output[/align]
For every scenario, please tell Joe at what time could he go back home as early as possible. Every day Joe started his work at 08:00:00 am. The format of time is HH:MM:SS am|pm.
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
[align=left]Source[/align]
浙江工业大学第四届大学生程序设计竞赛
[align=left]Recommend[/align]
JGShining
水题一枚,dp[i]表示到第i个人买完票需要的最短时间。
状态转移方程: dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i]) a[i]表示单买的时间,b[i]表示i和i-1合买的时间。
附上代码:
Tickets
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 560 Accepted Submission(s): 280
[align=left]Problem Description[/align]
Jesus, what a great movie! Thousands of people are rushing to the cinema. However, this is really a tuff time for Joe who sells the film tickets. He is wandering when could he go back home as early as
possible.
A good approach, reducing the total time of tickets selling, is let adjacent people buy tickets together. As the restriction of the Ticket Seller Machine, Joe can sell a single ticket or two adjacent tickets at a time.
Since you are the great JESUS, you know exactly how much time needed for every person to buy a single ticket or two tickets for him/her. Could you so kind to tell poor Joe at what time could he go back home as early as possible? If so, I guess Joe would full
of appreciation for your help.
[align=left]Input[/align]
There are N(1<=N<=10) different scenarios, each scenario consists of 3 lines:
1) An integer K(1<=K<=2000) representing the total number of people;
2) K integer numbers(0s<=Si<=25s) representing the time consumed to buy a ticket for each person;
3) (K-1) integer numbers(0s<=Di<=50s) representing the time needed for two adjacent people to buy two tickets together.
[align=left]Output[/align]
For every scenario, please tell Joe at what time could he go back home as early as possible. Every day Joe started his work at 08:00:00 am. The format of time is HH:MM:SS am|pm.
[align=left]Sample Input[/align]
2 2 20 25 40 1 8
[align=left]Sample Output[/align]
08:00:40 am 08:00:08 am
[align=left]Source[/align]
浙江工业大学第四届大学生程序设计竞赛
[align=left]Recommend[/align]
JGShining
水题一枚,dp[i]表示到第i个人买完票需要的最短时间。
状态转移方程: dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i]) a[i]表示单买的时间,b[i]表示i和i-1合买的时间。
附上代码:
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #include<set> #define CLR(a,b) memset((a),(b),sizeof((a))) using namespace std; int const nMax = 3010; int const inf=0x7fffffff; int a[nMax],b[nMax]; int dp[nMax]; int n; int DP() { CLR(dp,0); dp[1]=a[1]; dp[2]=min(b[2],a[1]+a[2]); for(int i=3;i<=n;i++){ dp[i]=min(dp[i-1]+a[i],dp[i-2]+b[i]); } return dp ; } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=2;i<=n;i++)scanf("%d",&b[i]); int t=DP(); t+=8*3600; t%=(24*3600); if(t/3600<12) printf("%02d:%02d:%02d am\n",t/3600,t%3600/60,t%3600%60); else { t-=12*3600; printf("%02d:%02d:%02d pm\n",t/3600,t%3600/60,t%3600%60); } } return 0; }
相关文章推荐
- 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(DP)
- 【dp】HDU - 1260 Tickets
- hdu 1260 Tickets(DP)
- HDU 1260 Tickets
- HDU 1260 Tickets (很简单的基础DP题,找到状态转移方程就直接AC了)
- HDU-1260 Tickets ( DP )
- hdu 1260 Tickets(dp)
- hdu 1260 Tickets(DP)
- HDU 1260 Tickets(基础DP)
- hdu 1260 Tickets
- HDU 1260:Tickets(DP)
- hdu 1260 Tickets(基础dp)
- HDU 1260 Tickets