hdu 5000 Clone
7358 단어 clone
그러면\begin{equation}dp[i][j]=\sum{0\leq k\leq\min(i,arr[i])} dp[i-k][j-1]\end{equation}
마지막으로sum/2의 종류를 취하면 됩니다.원인은 n번 주사위를 던지는 것을 참조하여 주사위의 합이 얼마나 되는지 구할 때 확률이 가장 크다.
코드는 다음과 같습니다.
1 #define MOD 1000000007
2 #define MAXN 2002
3 #include <cstdio>
4 #include <cstdlib>
5 #include <iostream>
6 #include <cstring>
7 using namespace std;
8 int N;
9 int arr[MAXN];
10 int dp[MAXN][MAXN];//[sum][dim]
11 int sum;
12 void solve()
13 {
14 memset(dp, 0, sizeof(dp));
15 //init
16 for( int i = 0 ; i < MAXN ; i++ )
17 {
18 dp[0][i] = 1;
19 if( i <= arr[0] )
20 {
21 dp[i][0] = 1;
22 }
23 }
24 for( int j = 1 ; j < N ; j++ )
25 {
26 for( int i = 1 ; i <= sum ; i++ )
27 {
28 int tmp = min(arr[j], i);
29 for( int k = 0 ; k <= tmp; k++ )
30 {
31 dp[i][j] += dp[i-k][j-1];
32 dp[i][j] %= MOD;
33 }
34 }
35 }
36 printf ( "%d
", dp[sum/2][N-1] );
37 }
38 int main(int argc, char *argv[])
39 {
40 int T;
41 scanf ( "%d", &T );
42 while(T--)
43 {
44 sum = 0;
45 scanf ( "%d", &N );
46 for( int i = 0 ; i < N ; i++ )
47 {
48 scanf ( "%d", &arr[i] );
49 sum += arr[i];
50 }
51 solve();
52 }
53 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GitHub 웹 사이트에서 폴더 이름 바꾸기최근 Mac에서 작업하는 동안 git 저장소를 시작하고 물음표(?)가 있는 폴더를 만든 문제가 발생했습니다. 그것은 Mac에서는 유효한 폴더 이름이지만 Windows에서는 아닙니다. 그래서 나중에 Windows PC...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.