POJ 2441 Arrange the Bulls(状态压缩DP入门)

GLM-4本地部署的实战教程 本文主要介绍了GLM-4-9B本地部署的实战教程,希望对学习和使用大模型的同学们有所帮助。 文章目录 1. 前言 2. 配置环境 2.1 安装虚拟环境 2.2 安装依赖库 2.3 下载模型文件 3. 运行glm-4-9b-chat 阅读详情
- Arrange the BullsTime Limit:4000MS    Memory Limit:65536KB    64bit IO Format:%lld & %llu

Description

Farmer Johnson's Bulls love playing basketball very much. But none of them would like to play basketball with the other bulls because they believe that the others are all very weak. Farmer Johnson has N cows (we number the cows from 1 to N) and M barns (we number the barns from 1 to M), which is his bulls' basketball fields. However, his bulls are all very captious, they only like to play in some specific barns, and don’t want to share a barn with the others.

So it is difficult for Farmer Johnson to arrange his bulls, he wants you to help him. Of course, find one solution is easy, but your task is to find how many solutions there are.

You should know that a solution is a situation that every bull can play basketball in a barn he likes and no two bulls share a barn.

To make the problem a little easy, it is assumed that the number of solutions will not exceed 10000000.

Input

In the first line of input contains two integers N and M (1 <= N <= 20, 1 <= M <= 20). Then come N lines. The i-th line first contains an integer P (1 <= P <= M) referring to the number of barns cow i likes to play in. Then follow P integers, which give the number of there P barns.

Output

Print a single integer in a line, which is the number of solutions.

Sample Input

3 4
2 1 4
2 1 3
2 2 4

Sample Output

4


题意:牛想玩篮球,而且每头牛不喜欢独享一个牛棚,问你能够满足以上条件的情况有几种。


解题思路:这题不好说,我已经在代码上注明了,大家看完应该能看懂。这题对于刚入门的一定要反复思考,完全想明白了那你就是一个质的飞跃。


<span style="font-size:18px;">#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m;
int dp[1<<21],a[21][21];///a用于记录牛是否喜欢这个房间,1代表喜欢,0代表不喜欢
int main()
{
    while(~scanf("%d %d",&n,&m))
    {
        int x;
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;i++){
            scanf("%d",&x);
            for(int j=0;j<x;j++){
                int lie;
                scanf("%d",&lie);
                a[i][lie-1]=1;
            }
        }
        if(n>m){
            printf("0\n");
            continue;
        }
        memset(dp,0,sizeof(dp));
        dp[0]=1;/// 一开始全都为空
        for(int i=1;i<=n;i++){ /// 枚举每一头牛
            for(int j=(1<<m)-1;j>=0;j--){ /// 枚举每一个集合
                if(dp[j]){ ///如果这个集合存在
                    for(int k=0;k<m;k++){ /// 枚举每一个房间
                        if(((1<<k)&j)!=0) continue; /// 如果这个集合的这个房间已经有人了
                        if(a[i][k]==0) continue; /// 如果牛不喜欢这个房间
                        int temp=(1<<k)|j; /// 这个新集合的值
                        dp[temp]+=dp[j]; /// 这个新集合赋值,其实就是1
                    }
                }
                dp[j]=0; /// 枚举的集合变成了新集合,所以旧集合需要消除
            }
        }
        int ans=0;
        for(int i=0;i<(1<<m);i++) /// 最终留下来的集合就是满足条件的了
            ans+=dp[i];
        printf("%d\n",ans);
    }
    return 0;
}</span>



ROS机器人未知环境自主探索功能包explore_lite总结 本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包exp 阅读详情

相关推荐

树莓派4B系统安装及SSH远程控制(简单易操作)

​自从2022年4月树莓派官网更新了RaspberryPiImager版本v1.7.2后,便不再支持自行建立ssh文件,并用默认用户名pi和密码raspberry的方式进行远程控制(亲测不行,输密码时一直access denied)。但是该版本软件提供了烧录系统前设置ssh用户及密码功能。本文记录了系统安装和SSH远程操作步骤。........................

机械人的代码路 5789

POJ 2441 Arrange the Bulls 状态压缩DP

要求将N头牛放在M个牛棚,每个牛棚只能放一头牛,且每头牛都对牛棚有有所挑剔例如第一头牛,可以选择的牛棚为一号、二号或四号,则不能将它分配到三号牛棚。题目要求计算出将所有牛,满足它们的挑剔的情况下,全部分配到牛棚的方案数量。

qq_53038151的博客 178

SocraticLM: Exploring Socratic Personalized Teaching with Large Language Models

大型语言模型(LLM)被认为是推进智能教育的一项关键技术,因为它们展示了深入理解教学场景和为学生提供个性化指导的潜力。然而,当前个性化教学中基于LLM的应用主要遵循“问答”范式,学生被动地获得答案和解释。在本文中,我们提出了苏格拉底式教学模式(SocraticLM ),它实现了一种苏格拉底式的“发人深省”的教学范式,实现了真正的课堂教师的角色,让学生积极参与到真正掌握解决问题所需的思考过程中。

weixin_43961909的博客 2882

poj 2441 (状压DP

题意:每只牛只想在特定的房间里玩,每个房间只能有一只牛,问你能够满足以上条件的情况有几种 思路:很容易想到是状压DP,dp[i][j]表示前i头牛,整体处于j状态的时候的方案数,所以先枚举牛,然后到当前状态,然后到下一个要转移到的状态 但这里要注意一下如果直接二维会MLE,其实这里类似01背包,从容量大的转移到可容量少的集合,所以可以减去一维,倒序枚举,这样是为了保证只由i-1的阶段转移到i这个阶段,同时枚举完当前状态后要清空一下当前状态,因为是倒序,所以当前状态后面可能会被重复计数 #include&lt

weixin_45539557的博客 208

ai获客系统功能代码

AI 获客系统是一个复杂的体系,以下为你提供一个简化的 Python 示例,聚焦于客户行为分析与销售线索筛选功能,模拟实现从多渠道收集数据后的初步处理流程。假设已有从官网、线上商城等渠道收集到的客户数据,以字典列表形式存储,每个字典包含客户基本信息及购买行为数据。通过分析客户购买频率与金额,筛选出高价值销售线索。python上述代码仅为基础示例,实际 AI 获客系统还涉及更复杂的数据采集、清洗、存储,以及运用机器学习算法进行深度客户洞察等功能。

weixin_ggwwsscc的博客 891

从TL431光耦到集成隔离器:3种反激电源反馈方案全对比,你的项目到底该选哪个?

本文深入对比了反激电源设计中TL431光耦、集成隔离器和原边反馈三种主流反馈方案的优缺点,帮助开发者在电源设计中选择最适合的方案。从精度、成本、隔离等级等多维度分析,为反激式(Flyback)拓扑的应用提供实用选型指南。

weixin_30536513的博客 399

POJ 2441 状压DP 由滚动数组到枚举子集

大致题意 农场主安排 N头公牛打篮球,每头公牛只会在特定的几个篮球场独自打球,篮球场数为 M。求每一头公牛都安排到的方案数。1 <= N <= 20, 1 <= M <= 20 M < N 时没有可行方案。爆搜复杂度O(nm2nm),TLE。状态压缩n或者m其中一维,复杂度降为O(nm2n)或O(nm2m)。 第一版:滚动数组 M >= N ,压缩 n复杂度更低...

neweryyy的博客 199

视频编解码——视频编解码器工作原理

目录什么是视频编解码器为什么需要视屏编解码器视频编码器与数字视频容器时评编码器的历史 什么是视频编解码器 简单来说就是用于压缩或解压数字视频的软件或硬件 编码是信息从一种形式或格式转换为另一种形式的过程,解码是编码的反向。 适用于视频 编码是将视频、音频的原始格式的文件通过压缩技术转换成另一种格式(视频如h.264,h.265,m-jpeg等)。 解码是编码的反向过程。应用中,一般是将h.264,h.265格式数据解码成如YUV格式裸流交给显示器显示。 为什么需要视屏编解码器 需要在有限的带宽或存储空间

路人coder 1万+

poj2441(状压dp)

题目链接:http://poj.org/problem?id=2441,题意相当于给定n个公牛及它们各自想打的篮球场地,求取 方案数使得这n个公牛都有场地可打且这些场地均不重复。 看完《挑战程序设计竞赛》做的第一道状态压缩动态规划题,状态转移方程相对比较好想。注意这道数据 还是比较大,亦用滚动数组~~~ 一开始我是用n作为第二维进行状态转移的,超时了~~~后来看了讨论,便转为m作为第二维,

lixiaomu2的博客 416

Hi3516CV610开发板ISP调优实战——从在线调试到参数固化部署全流程

本文详细介绍了Hi3516CV610开发板ISP参数从在线调试到固化部署的全流程。针对调试参数重启丢失的痛点,重点解析了如何从PQTools安全导出参数、进行格式转换与适配,并通过烧录工具或系统更新两种路径将参数永久固化至Flash。最后提供了双重验证与常见问题排查方法,确保调优效果在产品中稳定生效。

weixin_29169505的博客 423

在Simulink中构建永磁同步电机的网络化控制模型,并分析通信网络对系统性能的影响

核心优势通过仿真验证了网络延迟和丢包对PMSM控制性能的影响。提供了改进PI参数或引入自适应控制的解决方案。扩展方向抗干扰控制:结合卡尔曼滤波或滑模控制抑制网络噪声。时间敏感网络(TSN)建模:参考知识库[2]的中断触发方式,实现确定性通信。网络安全仿真:模拟恶意攻击(如数据篡改)对控制系统的威胁。

xiaoheshang_123的博客 167

poj2441 Arrange the Bulls -- 状压dp

Arrange the Bulls dsfbfsdp 问题:有n头牛,m个位置,每头牛都有1个或几个喜欢的位置,每个位置只能住一头牛。 问:有多少种安排的方法能够使每头牛都住在自己喜欢的位置。 我先用了dfs(TLE),又用了bfs(MLE),最后才用的是dp。 dsf dfs版:每头牛有他自己喜欢的位置,从第一头牛开始遍历到最后一头牛,如果它喜欢的位置是空的我们就能将它放进去(vis[edge[i].to = 1),若已经有了牛在这个位置,我们就跳过它的这个喜欢的位置(注意要vis[edge[i].t

weixin_45363113的博客 239

攻克低照度检测难题:YOLOv11主干网络增强新方案PE-YOLO详解

编码器部分# 解码器部分self.dec_conv2 = nn.Conv2d(512, 128, 3, padding=1) # 跳跃连接self.dec_conv3 = nn.Conv2d(256, 64, 3, padding=1) # 跳跃连接self.dec_conv4 = nn.Conv2d(128, 32, 3, padding=1) # 跳跃连接# 编码路径# 解码路径(带跳跃连接)

FJN110的博客 104

POJ 2441 Arrange the Bulls

Arrange the Bulls Time Limit: 4000MS Memory Limit: 65536K Description Farmer Johnson’s Bulls love playing basketball very much. But none of them would like to play basketball with the other bulls bec...

忘梦心的博客 525

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

poj 2441 Arrange the Bulls(状压DP入门)

Arrange the Bulls Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 3509   Accepted: 1344 Description Farmer Johnson's Bulls love playing basketball very much.

ACway的专栏 1331

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

poj 2441 Arrange the Bulls

Description Farmer Johnson's Bulls love playing basketball very much. But none of them would like to play basketball with the other bulls b

喵呜的Blog 2230

poj 2441Arrange the Bulls解题报告-状态压缩dp

题目链接:http://poj.org/problem?id=2441 题目描述:有n头牛, m个仓库,每头牛有它喜欢的仓库,每个仓库最多只能安排一头牛,问有多少种安排方法。   这道题目应该算是状态压缩dp的简单题目。 如果之前没有接触过状态压缩dp,或者没有很好的理解的状态压缩dp,可以看看这两篇论文:论文1, 论文2。这两篇论文自我感觉都写的很好,尤其是论文2里讲解的

629

Arrange the Bulls(poj2441)状态压缩dp

Arrange the Bulls Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 4317   Accepted: 1646 Description Farmer Johnson's Bulls love playing basketball very much.

相思作坊半世离殇的博客 414

POJ - 2441 Arrange the Bulls (状压DP)

题意:头牛,个牛棚,每个牛棚只能有一头牛,每头牛都只能在自己喜欢的牛棚里,给每头牛安排位置,总共有多少种安排方案? 思路:每个牛棚可以放牛也可以不放牛,个牛棚,故可以用状压,表示状态下,给前i头牛分配牛棚的方案数 ( & ,) 当前状态只与上一状态有关,可以用滚动数组来节省空间 #include <stdio.h> #include <string....

GYH0730的博客 342

POJ - 2441 Arrange the Bulls (状态压缩DP)

Arrange the Bulls Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 4458   Accepted: 1695 Description Farmer Johnson's Bulls love playing basketball very much.

qq_18661257的专栏 756

Poj-2441 Arrange the Bulls //状压dp

题目链接 http://poj.org/problem?id=2441 题意 有 nnn 头牛,mmm 个谷仓,每头牛可以去指定的几个谷仓打篮球,在一个谷仓只能容纳一头牛的前提下,问有多少种方案使得这 nnn 头牛都有地方打篮球 解析 首先肯定想到暴力搜索的做法,就是先给一头牛分配一个谷仓,然后在与前 i−1i-1i−1 头牛谷仓不冲突的情况下,给第 iii 头牛分配谷仓,直到分配到最后一头牛,合...

wqq的博客 219

POJ 2441 Arrange the Bulls && POJ 3254 Corn Fields 状压DP入门

传送门:POJ2441 题意:将n头牛分到m个牛栏里,每头牛都有自己喜欢的牛栏,每个牛栏只能放一头牛,问共有多少种分配方案。 思路:由于n和m都很小,状压搞一搞就好了,dp[i]表示m个牛栏的状态为i的分配方案(将i转化为2进制,1表示有牛,0表示没有牛) __builtin_popcount(k)返回k的二进制中有多少个1 代码: #include #include #include

WA是一笔财富 278

POJ 2441 Arrange the Bulls

题意:给你n头牛以及m个房间,每头牛只可放在一些固定的房间,求每头牛都放置到房间中的方案数。 思路:用dp[i][j]表示第i头牛在状态j时的方案数,则,dp[i][j] += dp[i-1][k];其中k为前i-1头牛放置成状态k的方案数,要保证在放第i头牛的位置为0。这样写空间消耗太大, 故需要改成滚动数组。dp[cnt][x] += dp[1-cnt][k];x为第i头牛可以放到房间的状

little_胖的专栏 651

POJ2441--Arrange the Bulls

题目大意:有N头牛,M个谷仓。每头牛都有自己喜欢呆的谷仓。每个谷仓只能安排一头牛。问一共有多少种分法。   分析:状压DP。状态:dp[i][j]表示第i头牛谷仓状态为j时的方法数。 状态转移方程:dp[i][j] += dp[i-1][k],k从0到1 代码: #include #include #include using namespace std; int dp[

Apple.Daily的专栏 495
上一篇: HDU 1712 ACboy needs your help (简单分组背包)
下一篇: HDU 5532 Almost Sorted Array(状态压缩DP)
hellohelloC
博客等级 码龄12年 15粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值