LOJ #10172. 「一本通 5.4 练习 1」涂抹果酱

爆搜出三进制的状态,因为m<=5,所以状态最多为3*(2^5)=48个,然后就可以用一个二维dp来统计答案了。
可以发现给出行上和给出行下的方案数是一样的,设给出行上的方案数为ans1,给出行下的方案数为ans2,答案即为 ans1*ans2。
所以严格意义上不算是状压dp吧,没有用到二进制状压的精髓。
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e4+5,M=50,MOD=1e6;
int n,m,k,cnt,ans1,ans2,ans,id;
int a[M],f[N][M];
bool pd[M][M];
struct number{
   int a[M];}num[M];

void dfs(int x,int last)
{
   
	if (x==m+1)
	{
   
		cnt++;
		for (register int i=1; i<=m; ++i) num[cnt].a[i]=a[i];
		return;
	}
	for (register int i=1; i<=3; ++i)
	
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值