牛客练习赛84 C.牛客推荐系统开发之选飞行棋子(状态dp)

Posted issue是fw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客练习赛84 C.牛客推荐系统开发之选飞行棋子(状态dp)相关的知识,希望对你有一定的参考价值。

LINK

顺序考虑 1... n 1...n 1...n每个物品的选择情况

由于只有 4 4 4个人,每个人只有选和没选两种状态,考虑状压

定义 f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i个物品,这 4 4 4个人的选择状态为 j j j的方案数(二进制为 1 1 1表示选了)

枚举物品 i i i,枚举状态 j j j

对于第 i i i个物品,枚举是第 1 , 2 , 3 , 4 1,2,3,4 1,2,3,4个人取

类似的转移就好了

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+10;
const int mod = 1e9+7;
int n;
long long f[maxn][1<<5];
char a[5][maxn];
int main()
{
	cin >> n;
	for(int i=1;i<=4;i++)	cin >> ( a[i]+1 );
	f[0][0] = 1;
	for(int i=1;i<=n;i++)
	{
		for(int q=0;q<(1<<4);q++)
		{
			f[i][q] += f[i-1][q];
			for(int j=1;j<=4;j++)
			{
				if( (q>>(j-1))&1 )	continue;
				if( a[j][i]=='0' )	continue;
				f[i][q|(1<<(j-1))] += f[i-1][q];
			}
		}
	}
	cout << f[n][(1<<4)-1];
}

以上是关于牛客练习赛84 C.牛客推荐系统开发之选飞行棋子(状态dp)的主要内容,如果未能解决你的问题,请参考以下文章

牛客练习赛84 D.牛客推荐系统开发之动态特征获取(set应用)

牛客练习赛84:牛客推荐系统开发之标签重复度(点分治+动态开点权值线段树)

牛客练习赛83 E.牛客推荐系统开发之标签重复度

牛客网Nowcoder 牛客练习赛13 A.幸运数字Ⅰ B.幸运数字Ⅱ(数组或者dfs) C.幸运数字Ⅲ(思维)

牛客练习赛83 C.集合操作(二分,单调性)

牛客练习赛54 C.排序 暴力枚举+逆序对