传送门:传球游戏
思路:用一个二维集合f[i][j]表示传了i次球后在j手上的次数,容易想到f[i][j]=f[i-1][j-1]+f[i-1][j+1],因为是一个圆,所以当j==1或j==n时需要特判。
#includeusing namespace std; typedef pair PII; typedef long long ll; int ans,sum; const int N=1010; int f[N][N]; int n; int main() { int n,m; cin>>n>>m; f[0][1]=1; for(int i=1;i<=m;i++) for(int j=0;j<=n;j++) { if(j==1) f[i][j]=f[i-1][2]+f[i-1][n]; else if(j==n) f[i][j]=f[i-1][n-1]+f[i-1][1]; else f[i][j]=f[i-1][j-1]+f[i-1][j+1]; } cout<


![[NOIP2008 普及组] 传球游戏(线性DP) [NOIP2008 普及组] 传球游戏(线性DP)](http://www.mshxw.com/aiimages/31/1030826.png)
