• bzoj3400[Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队


    Description

        农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘
    队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤100000).约翰要选出1只或多于1只奶牛来参加他的飞盘队.由于约翰的幸运数字是F(1≤F≤1000),他希望所有奶牛的飞盘水准指数之和是幸运数字的倍数.
        帮约翰算算一共有多少种组队方式.

    Input

        第1行输入N和F,之后N行输入Ri.

    Output

     
        组队方式数模10^8取余的结果.

    Sample Input

    4 5
    1
    2
    8
    2

    Sample Output

    3

    HINT

        组队方式有(2,3),(3,4),(1,2,4)共三种

    dp……没什么好说的

    f[i][j]表示前i头牛水准和对幸运数字取模为j的方案数

    f[i][j]=f[i-1][j]+f[i][j-p]

    后面有可能爆范围,所以要处理一下

    #include <stdio.h>
    #define mod 100000000 
    int f[2001][1001];
    int n,m;
    inline int read()
    {
        int x=0;char ch=getchar();
        while(ch<'0'||ch>'9')ch=getchar();
        while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
        return x;
    }
    int main()
    {
    n=read();
    m=read();
        for(int i=1;i<=n;i++)
    {
            int p=read();
            f[i][p%m]=1;
            for(int j=0;j<m;j++)
    {
                f[i][j] =(f[i][j]+f[i-1][j])%mod;
                f[i][(j+p)%m]=(f[i][(j+p)%m]+f[i-1][j])%mod;
            }    
        }
        printf("%d
    ", f[n][0]);
    }
    

      

    ——by zhber,转载请注明来源
  • 相关阅读:
    C# 了解当前使用的语言版本
    Swagger api 接口管理 使用总结
    Git 常见错误操作
    NestJs 详解
    推荐一个NodeJS 框架 AdonisJS
    Lavavel8.x
    @typegoose/typegoose. 使用技巧
    Typeorm
    Cocos2Dx(4)——动画
    Java程序员的C#学习笔记(1) C#和.NET Framework概览
  • 原文地址:https://www.cnblogs.com/zhber/p/4036097.html
Copyright © 2020-2023  润新知