1 条题解

  • 0
    @ 2024-12-24 9:59:27

    Java :

    import java.math.BigDecimal;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class Main
    {
        public static BigInteger min(BigInteger a,BigInteger b)
        {
            if(a.compareTo(b)<0)
                return a;
            return b;
        }
        public static void main(String args[])
        {
            Scanner cin=new Scanner(System.in);
            int maxn=1100;
            BigInteger dp[][]=new BigInteger[21][maxn];
            for(int i=0;i<maxn;i++)
            {
                dp[2][i]=BigInteger.ZERO;
                dp[3][i]=BigInteger.valueOf(2).pow(i).subtract(BigInteger.ONE);
            }
            dp[2][1]=BigInteger.ONE;
            for(int i=4;i<21;i++)
            {
                dp[i][0]=BigInteger.ZERO;
                for(int j=1;j<maxn;j++)
                {
                    dp[i][j]=dp[i-1][j];
                    for(int k=0;k<=j;k++)
                        dp[i][j]=min(dp[i][j],dp[i][j-k].multiply(BigInteger.valueOf(2)).add(dp[i-1][k]));
                }
            }
            while(cin.hasNext())
            {
                int m=cin.nextInt();
                int n=cin.nextInt();
                System.out.println(dp[m][n]);
            }
        }
    
    }
    
    • 1

    信息

    ID
    1507
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者