#include<bits/stdc++.h>
#define MOD 1000000007
using namespace std;
typedef long long ll;
int n;
int main()
{
scanf("%d",&n);
vector<int> t(n,0);
int ma=0;
for(int i=0;i<n;++i)
{
scanf("%d",&t[i]);
ma=max(ma,t[i]);
}
sort(t.begin(),t.end());
vector<vector<ll>> dp(n,vector<ll>(ma+2,0));
if(t[0]!=1)
{
printf("0\n");
return 0;
}
// for(int i=0;i<n;++i) printf("%d ",t[i]);
// printf("\n");
dp[0][0]=1;
dp[0][1]=1;
for(int i=1;i<n;++i)
{
for(int j=0;j<=ma+1;++j) dp[i][j]=dp[i-1][j];
for(int j=0;j<=ma+1;++j)
{
if(t[i]<=j+1)
{
dp[i][min(j+t[i],ma+1)]+=dp[i-1][j];
if(dp[i][min(j+t[i],ma+1)]>=MOD)dp[i][min(j+t[i],ma+1)]-=MOD;
}
}
// for(int j=0;j<=ma+1;++j) printf("%lld ",dp[i][j]);
// printf("\n");
}
ll w=0;
for(int i=1;i<=ma+1;++i)
{
w+=dp[n-1][i];
if(w>=MOD) w-=MOD;
}
printf("%lld\n",w);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<bits/stdc++.h> #define MOD 1000000007 using namespace std; typedef long long ll; int n; int main() { scanf("%d",&n); vector<int> t(n,0); int ma=0; for(int i=0;i<n;++i) { scanf("%d",&t[i]); ma=max(ma,t[i]); } sort(t.begin(),t.end()); vector<vector<ll>> dp(n,vector<ll>(ma+2,0)); if(t[0]!=1) { printf("0\n"); return 0; } // for(int i=0;i<n;++i) printf("%d ",t[i]); // printf("\n"); dp[0][0]=1; dp[0][1]=1; for(int i=1;i<n;++i) { for(int j=0;j<=ma+1;++j) dp[i][j]=dp[i-1][j]; for(int j=0;j<=ma+1;++j) { if(t[i]<=j+1) { dp[i][min(j+t[i],ma+1)]+=dp[i-1][j]; if(dp[i][min(j+t[i],ma+1)]>=MOD)dp[i][min(j+t[i],ma+1)]-=MOD; } } // for(int j=0;j<=ma+1;++j) printf("%lld ",dp[i][j]); // printf("\n"); } ll w=0; for(int i=1;i<=ma+1;++i) { w+=dp[n-1][i]; if(w>=MOD) w-=MOD; } printf("%lld\n",w); } |
English