D - Redistribution
题意:
给你一个和。要求你构造数组。这个数组的元素都是大于3.
问:
对于一个确定的s。有几种构造。
思路:
很容易就想到dp,之后根据样例编即可。(和数的分解差不多)
AC
#include <iostream>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
ll dp[2500];
void init(){
for(int i=3; i<=2000; i++){
dp[i]=1;
if(i-3>=3){///dp[i]=1;
for(int j=3; j<=i-3; j++)dp[i]=(dp[i]+dp[j])%mod;
}
}
}
int main()
{
init();
int n;cin>>n;
///if(n<=2)return cout<<0<<endl,0;
cout<<dp[n]<<endl;
return 0;
}