http://poj.org/problem?id=1404
//* @author:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int K,L;
char key[]=new char[100];
char letter[]=new char[100];
int F[]=new int[100];
int p[]=new int[100];
int best;
int map[][][]=new int[100][100][100];
int father[][]=new int[100][100];
int q[]=new int[100];
int t,c;
int i,j,m,n;
int limitA,limitB;
char str[]=new char[100];
t=in.nextInt();
c=0;
while(c< t)
{
c++;
K=in.nextInt();
L=in.nextInt();
str=in.next().toCharArray();
for(i=1;i<=K;i++) key[i]=str[i-1];
str=in.next().toCharArray();
for(i=1;i<=L;i++) letter[i]=str[i-1];
for(i=1;i<=L;i++) F[i]=in.nextInt();
for(i=1;i<=K;i++)
{
for(j=1;j<=L;j++)
{
for(m=1;m<=j;m++)
{
map[i][j][m]=-1;
}
}
}
limitA=L-K+1;
map[1][1][1]=F[1];
for(i=2;i<=L;i++)
{
for(j=2;j<=i && j<=K;j++)
{
limitB=i-j+1;
for(m=1;m<=limitA && m<=limitB;m++)
{
if(map[j-1][i-1][m]>=0)
{
if(map[j][i][1]< 0 || map[j][i][1]>=map[j-1][i-1][m]+F[i])
{
map[j][i][1]=map[j-1][i-1][m]+F[i];
father[j][i]=m;
}
}
}
}
for(j=1;j<=i && j<=K;j++)
{
limitB=i-j+1;
for(m=2;m<=limitA && m<=limitB;m++)
{
if(map[j][i-1][m-1]>=0)
{
map[j][i][m]=m*F[i]+map[j][i-1][m-1];
}
}
}
}
best=1000000000;
for(i=1;i<=L;i++)
{
if(map[K][L][i]>=0 && map[K][L][i]<=best)
{
j=K;m=L;n=i;
while(m>=1)
{
q[j]=1;
while(n>1)
{
n--;m--;
q[j]++;
}
n=father[j][m];
m--;
j--;
}
best=map[K][L][i];
for(j=1;j<=K;j++)p[j]=q[j];
}
}
m=0;
System.out.printf("Keypad #%d:n",c);
for(i=1;i<=K;i++)
{
System.out.printf("%c: ",key[i]);
n=p[i];
while(n-->0)
{
m++;
System.out.printf("%c",letter[m]);
}
System.out.printf("n");
}
System.out.printf("n");
}
}
}
Meta
-
Recent Posts
Recent Comments
Archives
- May 2024
- April 2023
- February 2023
- January 2023
- December 2022
- November 2022
- September 2022
- June 2022
- July 2021
- January 2021
- February 2020
- September 2019
- March 2018
- February 2018
- August 2016
- July 2016
- June 2016
- May 2016
- April 2016
- March 2016
- February 2016
- January 2016
- December 2015
- November 2015
- October 2015
- September 2015
- August 2015
- July 2015
- June 2015
- May 2015
- April 2015
- March 2015
- February 2015
- January 2015
- December 2014
- November 2014
- October 2014
- September 2014
- August 2014
- July 2014
- June 2014
- May 2014
- April 2014
- March 2014
- February 2014
- January 2014
- December 2013
- November 2013
- October 2013
- September 2013
- August 2013
- July 2013
- June 2013
- May 2013
- April 2013
- March 2013
- February 2013
- January 2013
- December 2012
- November 2012
- October 2012
- September 2012
- August 2012
- July 2012
- June 2012
- May 2012
- April 2012
- March 2012
- February 2012
- January 2012
- December 2011
- November 2011
- October 2011
- September 2011
- August 2011
- July 2011
- June 2011
- May 2011
- April 2011
- March 2011
- February 2011
- January 2011
- December 2010
- November 2010
- October 2010
- September 2010
- August 2010
- July 2010
- June 2010
- May 2010
- April 2010
- March 2010
- February 2010
- January 2010
- December 2009
- November 2009
- October 2009
- September 2009
- August 2009
- July 2009
- June 2009
- May 2009
- April 2009
- March 2009
- February 2009
Categories
