码迷,mamicode.com
首页 > 其他好文 > 详细

[USACO09MAR]牛飞盘队Cow Frisbee Team

时间:2019-09-27 20:57:09      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:using   c++   out   定义   http   cout   cow   std   line   

传送门:https://www.luogu.org/problem/P2946

本题类似于01背包,定义  dp[i][j]  表示前  i  个牛,总和取模幸运值为  j  时的数量,a[i]为第j头牛的能力值,很明显dp[i][j]+=dp[i-1][j](不选择第i头牛)+dp[i-1][(j-a[i]+幸运值)%幸运值](选择第i头牛),这样就可以推出dp[n][0]第n头牛时余数为 0  的数量

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,luck;
 4 const int mod=(int)1e8;
 5 int a[2009];
 6 int dp[2009][1009];
 7 inline int read()
 8 {
 9     int x=0,f=1;char ch=getchar();
10     while(ch<0||ch>9){if(ch==-)f=-1;ch=getchar();}
11     while(ch>=0&&ch<=9){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
12     return x*f;
13 }
14 int main()
15 {
16     n=read(),luck=read();
17     for(int i=1;i<=n;i++)
18     {
19         a[i]=read();
20         a[i]%=luck;
21         dp[i][a[i]%luck]=1;
22     }
23     for(int i=1;i<=n;i++)
24     {
25         for(int j=0;j<luck;j++)
26         {
27             dp[i][j]=(dp[i-1][j]%mod+dp[i][j]%mod+dp[i-1][(j-a[i]+luck)%luck]%mod)%mod;
28         }
29     }
30     cout<<dp[n][0];
31 }

 

[USACO09MAR]牛飞盘队Cow Frisbee Team

标签:using   c++   out   定义   http   cout   cow   std   line   

原文地址:https://www.cnblogs.com/1129-tangqiyuan/p/11600234.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!