首页 > 其他分享 >Arrange the Bulls(状压dp)

Arrange the Bulls(状压dp)

时间:2022-08-29 01:55:15浏览次数:85  
标签:int 状压 Bulls include dp Arrange

Arrange the Bulls(状压dp)

题目大意:一些牛喜欢一些地方(每头牛都有一些喜欢的地方),现在要把这些地方分配给牛,每头牛都应该分到一个地方,问有多少种分配的方法

此题拥有着状压dp的鲜明特征,N和M只有20(看见这种数据的时候往状压dp上想一想),枚举每一种状态,判断合理性。像这种两种东西匹配的状压dp的题都基本是这种套路。

AC代码

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn=20;
int dp[1<<maxn],pw[maxn+2][maxn+2];//前面存储被选走的地方是哪几个,后面是牛喜欢的地方
int N,M;
int dfs(int st,int pos)//现在是什么状态,现在这头牛是哪头
{
	if(pos==N)return 1;//到底了,方法为1
	if(~dp[st])return dp[st];//初始化为-1,判断条件就是这个
	int ans=0;
	for(int i=0;i<M;i++)
		if((st&(1<<i))==0&&pw[pos][i])
			ans+=dfs(st|(1<<i),pos+1);
	return dp[st]=ans;
}
int main(void)
{
	memset(dp,-1,sizeof(dp));//初始化为负一是因为存在某种情况方法数为0的情况
	scanf("%d %d",&N,&M);
	for(int i=0;i<N;i++)
	{
		int x;scanf("%d",&x);
		for(int j=0;j<x;j++)
		{
			int y;scanf("%d",&y);
			y--;//因为这里的地方是从1开始的,而这里我用二进制的1<<0表示第一位,所以要减一
			pw[i][y]=1;
		}
	}
	cout<<dfs(0,0)<<endl;
	return 0;
}

啊啊啊!!!要与网路流的匹配区分开来,两个的数据量就很不同好吧。

标签:int,状压,Bulls,include,dp,Arrange
From: https://www.cnblogs.com/WUTONGHUA02/p/16634632.html

相关文章

  • HIT 校测 Round1 F - dp - 二项式定理 -
    题意:求\(x\in[0,10^n)\)的个数,使得\(4|x\)且\(x\)中数码4的个数为4的倍数,\(n\leq10^{16}\)题解:第一个条件可以转化为末两位为4的倍数。易知其中不含数码4的有18个,含1个......
  • pytorch多卡训练DDP卡死问题排查
    背景单机多卡并行模型训练,使用DistributedDataParallel加速,调用超过一个GPU会发生卡死,表现为GPU0占用100%且无法继续。排查使用nvtop工具查看,发现GPU0会被分配nproc_per......
  • Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)
    0x00漏洞描述Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003、windows2008、windows2008R2、windowsxp系统都会遭到攻击,该服务器漏......
  • 好好回答下 TCP 和 UDP 的区别
    写了这么多篇关于TCP和UDP的文章,还没有好好聊过这两个协议的区别,这篇文章我们就来开诚布公的谈一谈。关于TCP和UDP,想必大家都看过一张这样的图。有一个小姑娘在......
  • AtCoder Beginner Contest 266 D(DP)
    ……题面Takahashi要抓Snuke。好狠心的Takahashi呀(bushiSnuke有5个洞(,在$0m,1m,2m,3m,4m$处。Takahashi开始在$0m$处,每秒他能走$1m$。第$i......
  • 【luogu SP7685】FLWRS - Flowers(DP)(容斥)
    FLWRS-Flowers题目链接:luoguSP7685题目大意给你模数m,问你有多少个长度为n的排列满足相邻两个差不为1。思路首先一个简单的想法是容斥。那有\(n\)对相邻的不......
  • Flask 学习-20. route 路由中的 endpoint 参数
    前言@app.route中的endpoint参数,就相当于django中的name参数,用来反向生成URL。url_for()函数url_for()函数用于构建指定函数的URL。它把函数名称作为第一个参数。......
  • P5911 [POI2004]PRZ——状压dp
    一样,从\(n\le16\)启发用状压dp思路本质上与UVA11825Hackers'Crackdown异曲同工,不过可以通过预处理处理出一组人的集合时间复杂度最坏为\(O(2^{2n})\),当任何一个集合......
  • 【转载】AF_XDP技术详解
    原文信息作者:rexrock出处:https://rexrock.github.io/post/af_xdp1/目录1.用户态程序1.1创建AF_XDP的socket1.2为UMEM申请内存1.3向AF_XDPsocket注册UMEM1.4......
  • 基于 .NET 6 的轻量级 Webapi 框架 FastEndpoints
    FastEndpoints 是一个基于.NET6开发的开源webapi框架,它可以很好地替代.NETMinimalAPIs和MVC,专门为开发效率而生,带来了全新的开发模式和编码体验。另外对于.N......