G - 2-3 Trees (dp)

클릭 하여 링크 열기
l 키 노드 를 포함 하 는 2, 3 나 무 는 모두 몇 가지 형태 가 있 는 지 구하 고 결과 에 대해 나머지 r 를 취한 다.
우 리 는 최 하층 (잎 노드) 의 개 수 를 알 기 때문에 우 리 는 위로 유도 할 수 있다. 이 n 개의 잎 은 몇 개의 2 아이의 아버지 노드 와 3 아이의 아버지 노드 를 구성 하고 한 층 한 층 위로 유도 할 수 있다.또한 각 층 의 2 자 부 노드 와 3 자 부 노드 의 배열 도 형태 가 다양한 원인 이다.
그래서 dp [n] = dp [n] + dfs (i + t) * c [i + t] [t]
dfs (i + t) 는 하위 노드 수가 i + t 의 종 류 를 나타 낸다. 
c [i + t] [t] 는 조합 수 로 i + t 에서 t 개 를 꺼 내 는 방법 개수 입 니 다.
#include 
#include 
#include 
#include 
#include 
#include 
typedef long long ll;
using namespace std;

ll n,mod;
ll dp[5005];
ll c[2505][2505];

void init()
{
    c[0][0]=1;
    c[1][0]=1;
    c[1][1]=1;
    for(int i=2;i<=n/2;i++)
    {
        c[i][0]=c[i][i]=1;
        for(int j=1;j>n>>mod)
    {
        init();
        memset(dp,0,sizeof(dp));
        dp[0]=1;
        dp[1]=1;
        dp[2]=1;
        dp[3]=1;
        printf("%lld
",dfs(n)); } }

좋은 웹페이지 즐겨찾기