标签: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