• 斗地主(牛客)



    很明显的一个dp
    dp[i][j]表示打了前i张牌模数为j的方案数
    转移方程:
    dp[i][(j+a[x])%k]=dp[i][(j+a[x])%k]+dp[i-1][j];
    初始状态dp[0][0]=1;

    #include<bits/stdc++.h>
    using namespace std;
    #define lowbit(x) x&(-x)
    #define ll long long
    const int mod=1e9+7;
    int a[55];
    ll dp[105][55];
    int main(){
    	int n,m,k;
    	cin>>n>>m>>k;
    	for(int i=1;i<=m;i++)cin>>a[i];
    	dp[0][0]=1;
    	for(int i=1;i<=n;i++)
    	   for(int j=1;j<=m;j++)
    		  for(int z=0;z<k;z++)
    			dp[i][(z+a[j])%k]=(dp[i][(z+a[j])%k]+dp[i-1][z])%mod;
    	ll ans=0;
    	for(int i=0;i<k;i++)
    	if(i==7||i==17||i==27||i==37||i==47||i==9||i==19||i==29||i==39||i==49)
    	ans=(ans+dp[n][i])%mod;
    	cout<<ans<<endl;
         return 0;
    }
  • 相关阅读:
    文件
    drf序列化组件
    drf入门规范
    单例模式
    初识drf
    restful规范
    虚拟环境使用
    vue基础(三)
    vue基础(二)
    作业
  • 原文地址:https://www.cnblogs.com/wzxbeliever/p/15693075.html
Copyright © 2020-2023  润新知