bzoj 1079 DP
5105 단어 ZOJ
저 는 저 장 된 상태의 배열 을 모두 20 까지 열 었 는데 0 mstle 에 있 습 니 다.16 으로 바 꾸 면 됩 니 다.지 도 를 구 합 니 다.
/**************************************************************
Problem: 1079
User: BLADEVIL
Language: C++
Result: Accepted
Time:80 ms
Memory:131876 kb
****************************************************************/
//By BLADEVIL
#include <cstdio>
#define LL long long
#define d39 1000000007
using namespace std;
int n,x;
int sum[20];
LL w[16][16][16][16][16][16];
LL calc(int a,int b,int c,int d,int e,int last) {
if (a+b+c+d+e==0) return w[a][b][c][d][e][last]=1;
if (w[a][b][c][d][e][last]) return w[a][b][c][d][e][last];
LL sum=0ll;
if (a) (sum+=(a-(last==2))*calc(a-1,b,c,d,e,1))%=d39;
if (b) (sum+=(b-(last==3))*calc(a+1,b-1,c,d,e,2))%=d39;
if (c) (sum+=(c-(last==4))*calc(a,b+1,c-1,d,e,3))%=d39;
if (d) (sum+=(d-(last==5))*calc(a,b,c+1,d-1,e,4))%=d39;
if (e) (sum+=e*calc(a,b,c,d+1,e-1,5))%=d39;
return w[a][b][c][d][e][last]=sum;
}
int main(){
scanf("%d",&n);
while (n--) scanf("%d",&x),sum[x]++;
LL ans=calc(sum[1],sum[2],sum[3],sum[4],sum[5],0);
printf("%lld
",ans);
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
수학법칙을 찾으면 돼요. 그다음에 정답은요. k^(m-1)*(n-(m-1)*k)+(m+(m-1)*k+1)*k^(m-1) div 2...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.