`
java-mans
  • 浏览: 11414083 次
文章分类
社区版块
存档分类
最新评论

topcoder srm 531 div2 600pt

 
阅读更多

鸟题目 ...代码写的超难看,终于过了。。。

#include<iostream>
#include<cstring>
using namespace std;
const int mod=1000000007;

class NoRepeatPlaylist{public:
long long int dp[111];
    bool vis[111];
    long long int c[111][111];    
    bool you[111][111];
	long long int cc(int x,int y)
    {
        if(y==0)
        {
            return 1;
        }     
        if(y==1)
        {
            return x;    
        }   
        if(x==y)
        {
            return 1;
        }
        if(you[x][y])
        {
            return c[x][y];
        }
        else
        {
            you[x][y]=true;
            c[x][y] = cc(x-1,y) + cc(x-1,y-1);
            c[x][y] %= mod;
            return c[x][y];
        }
    }
	long long int f(int n,int m,int p)
	{
		if(m + 1 > n) 
		{
			return 0;
		}
		long long ans=1;
		long long temp;
		for(long long int i=n;i>=n-m;i--)
		{
			ans*=i;
			ans%=mod;
		}
		temp = n - m ;
		for(long long int i=1;i<=p-m-1;i++)
		{
			ans*=temp;
			ans%=mod;
		}		
		return ans;
	}  
    long long int x(int n,int m ,int p)
    {       
        if(m+1>n)
        {
           if(p!=n)
            return 0;
            else
            {
                long long int temp=1;
                for(int i=n;i>=1;i--)
                {
                    temp*=i;
                    temp%=mod;
                }                   
                return temp;
            }
        }    
        if(vis[n])      
        {
            return dp[n];
        }
        else
        {
            long long int temp=0;
            for(int i=1;i<=n-1;i++)
            {
                temp += cc(n,i)*x(i,m,p);
                temp %=mod;
            }
            dp[n]=f(n,m,p) - temp;
            while(dp[n]<0)
            {
            	dp[n]+=mod;
            }
            dp[n]%=mod;
            vis[n]=true;
            return dp[n];
        }
    }
    long long int numPlaylists(int n, int m, int p)
	{
        memset(vis,false,sizeof(vis));	
        memset(you,false,sizeof(you));
        return x(n,m,p);
	}
};


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics