1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 using namespace std;
5 int a[10005],b[10005];
6 int dp[10005][20];
7 int main()
8 {
9 int n,k,i,j,cnt;
10 while(~scanf("%d%d",&n,&k))
11 {
12 for (i=1;i<=n;i++) scanf("%d",&a[i]);
13 for (i=1;i<=n;i++) scanf("%d",&b[i]);
14 cnt=n;
15 for (j=2;j<=k;j++)
16 for (i=1;i<=n;i++)
17 {
18 cnt++;
19 a[cnt]=a[cnt-n];
20 b[cnt]=b[cnt-n];
21 }
22 n=cnt;
23 for (i=0;i<=n;i++)
24 for (j=0;j<15;j++) dp[i][j]=0x3f3f3f3f;
25 dp[0][0]=0;
26 for (i=1;i<=n;i++)
27 for (j=0;j<15;j++)
28 {
29 if (j==0) dp[i][j]=dp[i-1][j+5]+b[i];
30 else if (j>10) dp[i][j]=dp[i-1][j-1]+a[i];
31 else if (j==10) dp[i][j]=min(dp[i-1][j+4]+a[i],dp[i-1][j-1]+a[i]);
32 else dp[i][j]=min(dp[i-1][j-1]+a[i],dp[i-1][j+5]+b[i]);
33 }
34 k=0x3f3f3f3f;
35 for (i=0;i<=10;i++)
36 if (dp[n][i]<k) k=dp[n][i];
37 printf("%d\n",k);
38 }
39 }
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1494