zoukankan      html  css  js  c++  java
  • [POJ3181] Dollar Dayz

    Description

    Farmer John goes to Dollar Days at The Cow Store and discovers an unlimited number of tools on sale. During his first visit, the tools are selling variously for $1, $2, and $3. Farmer John has exactly $5 to spend. He can buy 5 tools at $1 each or 1 tool at $3 and an additional 1 tool at $2. Of course, there are other combinations for a total of 5 different ways FJ can spend all his money on tools. Here they are:

            1 @ US$3 + 1 @ US$2
    
    1 @ US$3 + 2 @ US$1
    1 @ US$2 + 3 @ US$1
    2 @ US$2 + 1 @ US$1
    5 @ US$1
    Write a program than will compute the number of ways FJ can spend N dollars (1 <= N <= 1000) at The Cow Store for tools on sale with a cost of $1..$K (1 <= K <= 100).

    Input

    A single line with two space-separated integers: N and K.

    Output

    A single line with a single integer that is the number of unique ways FJ can spend his money.

    题解:

    dp+高精加

    显然完全背包dp,dp[j]+=dp[j-i]

    需要高精加法

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    #define ll long long
    using namespace std;
    
    const int N = 1010;
    
    int dp[N][110];
    
    int gi() {
      int x=0,o=1; char ch=getchar();
      while(ch!='-' && (ch<'0' || ch>'9')) ch=getchar();
      if(ch=='-') o=-1,ch=getchar();
      while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();
      return o*x;
    }
    
    void plu(int x, int y) {
      int c=0,k=max(dp[x][0],dp[y][0]);
      for(int i=1; i<=k; i++) {
        dp[x][i]=dp[x][i]+dp[y][i]+c;
        c=dp[x][i]/10;
        dp[x][i]%=10;
      }
      dp[x][0]=k;
      while(c) {
        dp[x][++dp[x][0]]=c%10;
        c/=10;
      }
    }
    
    int main() {
      int m=gi(),n=gi();
      dp[0][0]=1,dp[0][1]=1;
      for(int i=1; i<=n; i++)
        for(int j=i; j<=m; j++)
          plu(j,j-i);
      for(int i=dp[m][0]; i>=1; i--)
        printf("%d", dp[m][i]);
      return 0;
    }
    
    
    
  • 相关阅读:
    [置顶] 2013年工作中遇到的20个问题(Bug):161-180
    Spring 3.1.1使用Mvc配置全局日期转换器,处理日期转换异常
    Java中ThreadLocal模拟和解释
    平衡
    一步一步学数据结构之1--n(二叉树遍历--非递归实现)
    RobotFramework+Selenium2环境搭建与入门实例
    UVA10168
    ubantu系统Django安装教程
    The connection to adb is down, and a severe error has occured完整解决办法
    服务端分页
  • 原文地址:https://www.cnblogs.com/HLXZZ/p/7509472.html
Copyright © 2011-2022 走看看