• Loj #6185. 烷基计数


    link: https://loj.ac/problem/6185

    随便DP一下就好了(我最近怎么越来越懒了2333)

    注意当子树大小有相同的时候需要用可重组合。。

    #include<bits/stdc++.h>
    #define ll long long
    #define maxn 405
    using namespace std;
    const int ha=1000000007;
    int f[maxn],n,m,inv[10];
    
    inline int add(int x,int y){
    	x+=y;
    	return x>=ha?x-ha:x;
    }
    
    inline int C(int x,int y){
    	if(x<y) return 0;
    	int an=1;
    	for(int i=1;i<=y;i++) an=an*(ll)(x-i+1)%ha*(ll)inv[i]%ha;
    	return an;
    }
    
    inline void dp(){
    	f[0]=1;
    	for(int i=1;i<=n;i++){
    		int ans=0,tmp=i-1;
    		if(!(tmp%3)) ans=add(ans,C(add(f[tmp/3],2),3));
    		
    		int tp=tmp>>1;
    		for(int j=0,u;j<=tp;j++){
    			u=tmp-(j<<1);
    			if(u!=j) ans=add(ans,C(add(f[j],1),2)*(ll)f[u]%ha);
    		}
    		
    		for(int j=0;j<i;j++)
    		    for(int k=j+1,u;(u=tmp-j-k)>k;k++){
    		    	ans=add(ans,f[j]*(ll)f[k]%ha*(ll)f[u]%ha);
    			}
    		 
    		f[i]=ans;
    	}
    }
    
    int main(){
    	inv[1]=1;
    	for(int i=2;i<=4;i++) inv[i]=-inv[ha%i]*(ll)(ha/i)%ha+ha;
    	
    	scanf("%d",&n);
    	dp();
    	printf("%d
    ",f[n]);
    	return 0;
    }
    

      

  • 相关阅读:
    2013上半年中国CRM市场分析报告
    windows运行命令大全
    JVM探索(二)
    JVM探索(一)
    1.数据结构和算法的基础笔记
    java程序性能优化
    http状态码
    mongodb清洗数据
    List的数据结构
    Foundation Data Structure
  • 原文地址:https://www.cnblogs.com/JYYHH/p/8497077.html
Copyright © 2020-2023  润新知