NC15491. Youhane Playing beatmania IVDX
描述
べィスドロップ〜周所周知,KONMAI出品的Beatmania IVDX是一款非常经典的街机音乐游戏,已经有数十年的历史。优酱最近想要开始体验这款游戏,但是她知道自己的水平实在是太差了,以至于连最低级别的段位认定都不能合格。为了让自己省一些钱(要知道因为beatmania IVDX是街机游戏,所以每玩一道至少都是需要投6块钱的),她决定自己制作一个模拟器来在家练习。
输入描述
单文件,多数据。在文件中,每行包含两个用空格分开的整数和,其中。
输出描述
请输出题目要求的答案,独占一行。
示例1
输入:
1 1 4 4 3 5
输出:
0 485 451
C++11(clang++ 3.9) 解法, 执行用时: 974ms, 内存消耗: 47336K, 提交时间: 2020-04-02 22:59:59
#include<iostream> #include<cstdlib> #include<stdio.h> using namespace std; const int mod=1e9+7; int n,m,f[2002][2002],c[2002][4002]; int main() { int i,j,s,p,q; for(i=0;i<=2000;i++) for(j=0;j<=4000;j++) { if(i==0) c[i][j]=1; else { if(i>=1) c[i][j]=(c[i][j]+c[i-1][j])%mod; if(j>=1) c[i][j]=(c[i][j]+c[i][j-1])%mod; } } while(scanf("%d%d",&n,&m)==2) { m--; for(i=1;i<=n;i++) for(j=0;j<m;j++) f[i][j]=(c[m-j-1][2*i-2]+f[i-1][j])%mod; int ans=0; for(i=1;i<=n;i++) { for(j=0;j<m;j++) ans=(ans+1LL*f[i][j]*c[m-j-1][2*(n-i)]%mod*(j+1))%mod; } printf("%d\n",ans); } return 0; }