标签:his tin sam ble turn panel 大学生 排列 home
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3780 Accepted Submission(s): 1896
题意:
处理k件事依次排列,每有一个件事单独处理时间,又知道相邻的两件事同时处理的时间,问这k件事最少的处理时间
代码:
//每件事考虑单独处理和他与前一个同时处理两种情况,dp求最小即可。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int f[2][2003],n,k,a[2003],b[2003]; int main() { scanf("%d",&n); while(n--){ scanf("%d",&k); for(int i=1;i<=k;i++) scanf("%d",&a[i]); for(int i=2;i<=k;i++) scanf("%d",&b[i]); f[0][1]=a[1];f[1][1]=a[1]; for(int i=2;i<=k;i++){ f[0][i]=min(f[0][i-1]+a[i],f[1][i-1]+a[i]); f[1][i]=f[0][i-1]-a[i-1]+b[i]; } int sum=min(f[0][k],f[1][k]); int se=sum%60; int mi=(sum/60)%60; int ho=((sum/60)/60)%60+8; int x1,x2,x3,x4,x5,x6,flag=0; if(ho>12) {ho-=12;flag=1;}; x1=ho/10;x2=ho%10;x3=mi/10;x4=mi%10;x5=se/10;x6=se%10; printf("%d%d:%d%d:%d%d ",x1,x2,x3,x4,x5,x6); if(flag) printf("pm\n"); else printf("am\n"); } return 0; }
标签:his tin sam ble turn panel 大学生 排列 home
原文地址:http://www.cnblogs.com/--ZHIYUAN/p/6551130.html