[Usaco2006 Jan] Dollar Dayz 奶牛商店

Posted Wolfycz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Usaco2006 Jan] Dollar Dayz 奶牛商店相关的知识,希望对你有一定的参考价值。

Description

约翰到奶牛商场里买工具.商场里有K(1≤K≤100).种工具,价格分别为1,2,…,K美元.约翰手里有N(1≤N≤1000)美元,必须花完.那他有多少种购买的组合呢?

Input

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

仅一行,输入N,K.

Output

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

不同的购买组合数.

Sample Input

5 3

Sample Output

5

一个简单的dp,不过要写高精度

#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
using namespace std;
inline int read(){
    int x=0,f=1;char ch=getchar();
    for (;ch<‘0‘||ch>‘9‘;ch=getchar())  if (ch==‘-‘)    f=-1;
    for (;ch>=‘0‘&&ch<=‘9‘;ch=getchar())   x=(x<<3)+(x<<1)+ch-‘0‘;
    return x*f;
}
inline void print(int x){
    if (x>=10) print(x/10);
    putchar(x%10+‘0‘);
}
const int N=1e4;
const int base=1e6;
const int digit=6;
const int maxn=1e2;
char s[maxn*digit];
struct Bignum{
    int len,v[maxn];
    void read(){
        scanf("%s",s);
        memset(v,0,sizeof(v));
        int n=strlen(s),tim=1;
        len=(n-1)/digit+1;
        for (int i=0,j=n-1;i<j;i++,j--)  swap(s[i],s[j]);
        for (int i=0;i<n;i++){
            v[i/digit]+=(s[i]-‘0‘)*tim,tim*=10;
            if (tim==base)  tim=1;
        }
    }
    void write(){
        printf("%d",v[len-1]);
        for (int i=len-2;~i;i--)    printf("%0*d",digit,v[i]);
        putchar(‘\n‘);
    }
}f[N+10];
Bignum operator +(const Bignum &x,const Bignum &y){
    Bignum z;
    memset(z.v,0,sizeof(z.v));
    z.len=max(x.len,y.len);
    for (int i=0;i<=z.len;i++)   z.v[i]+=x.v[i]+y.v[i],z.v[i+1]=z.v[i]/base,z.v[i]%=base;
    while (z.v[z.len])  z.v[z.len+1]=z.v[z.len]/base,z.v[z.len]%=base,z.len++;
    return z;
}
int main(){
    int n=read(),k=read();
    f[0].len=f[0].v[0]=1;
    for (int i=1;i<=k;i++)
        for (int j=i;j<=n;j++)
            f[j]=f[j]+f[j-i];
    f[n].write();
    return 0;
}

以上是关于[Usaco2006 Jan] Dollar Dayz 奶牛商店的主要内容,如果未能解决你的问题,请参考以下文章

1718: [Usaco2006 Jan] Redundant Paths 分离的路径

1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会

[BZOJ1718][Usaco2006 Jan] Redundant Paths 分离的路径

BZOJ 1719--[Usaco2006 Jan] Roping the Field 麦田巨画

BZOJ1654[Usaco2006 Jan]The Cow Prom 奶牛舞会 赤果果的tarjan

BZOJ1718 [Usaco2006 Jan] Redundant Paths 分离的路径