首页 > 其他 > 详细

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

时间:2015-12-04 22:34:06      阅读:312      评论:0      收藏:0      [点我收藏+]

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为某个余数的就可以啦……
#include<cstdio>
#include<algorithm>
using namespace std;

int n,m,a,f[1000][2],i,j;
char c;
int read(){
    a=0;
    c=getchar();
    while(c<0||c>9) c=getchar();
    while(c>=0&&c<=9) a=a*10+c-48,c=getchar();
}
int main(){
    scanf("%d%d",&n,&m);
    f[0][0]=1;
    int l=1,d=0;
    for (i=0;i<n;i++){
        read();
        swap(l,d);
        a%=m;
        for (j=m-1;j>=0;j--) {f[j][d]=f[j][l]+f[j<a?j-a+m:j-a][l];if(f[j][d]>=1e8) f[j][d]-=1e8;}
    }
    printf("%d\n",f[0][d]-1);
}

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

原文:http://www.cnblogs.com/Enceladus/p/5020324.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!