ABC310D Peaceful Teams

ABC310D Peaceful Teams

洛谷[ABC310D] Peaceful Teams

题目大意

n n n个运动员以及 m m m对数,每对数为 A i A_i Ai B i B_i Bi,表示 A i A_i Ai B i B_i Bi不能分在同一小组。你需要将这些人分为 t t t个小组,每个小组不能为空。

求分组的方案数。当一个划分中有两个运动员属于同一个队伍,而在另一个划分中属于不同的队伍时,这两个划分是不同的。

1 ≤ n ≤ 10 , 0 ≤ m ≤ n ( n − 1 ) 2 1\leq n\leq 10,0\leq m\leq \dfrac{n(n-1)}{2} 1n10,0m2n(n1)


题解

用状压DP。

f i , s f_{i,s} fi,s表示当前已经选择的运动员的状态为 s s s,这些运动员分成了 i i i组。则转移式为

f i , s = ∑ f i − 1 , s ⊕ j f_{i,s}=\sum f_{i-1,s\oplus j} fi,s=fi1,sj

其中 j j j满足 j & s = j j\& s=j j&s=j j j j中状态为 1 1 1的运动员中不存在两个不能分在同一个小组的运动员。

j j j是否满足后面的条件可以 O ( m 2 n ) O(m2^n) O(m2n)预处理出,而因为 s s s包含于 2 n − 1 2^n-1 2n1 j j j包含于 s s s,所以枚举 s s s j j j的次数为 3 n 3^n 3n(每个运动员只有三种情况:不在 s s s中、在 s s s中但不在 j j j中,在 s s s中也在 j j j中)。

注意当每个小组成员不变的情况下,会将一种情况计算 t ! t! t!次,所以答案为 f t , 2 n − 1 t ! \dfrac{f_{t,2^n-1}}{t!} t!ft,2n1

时间复杂度为 O ( m 2 n + t 3 n ) O(m2^n+t3^n) O(m2n+t3n)

code

#include<bits/stdc++.h>
using namespace std;
int n,t,m,a[105],b[105],z[2005];
long long ans,f[15][2005];
int main()
{scanf("%d%d%d",&n,&t,&m);for(int i=1;i<=m;i++){scanf("%d%d",&a[i],&b[i]);}for(int s=0;s<1<<n;s++){z[s]=1;for(int k=1;k<=m;k++){if((s&(1<<a[k]-1))&&(s&(1<<b[k]-1))){z[s]=0;break;}}}f[0][0]=1;for(int i=1;i<=t;i++){for(int s=1;s<1<<n;s++){for(int j=s;j>=1;j=(j-1)&s){if(z[j]) f[i][s]+=f[i-1][s^j];}}}ans=f[t][(1<<n)-1];for(int i=1;i<=t;i++) ans/=i;printf("%lld",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/90371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++进阶(六)】STL大法--栈和队列深度剖析优先级队列适配器原理

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 栈和队列 1. 前言2. 栈和队列的接口函数熟悉3. …

《淘宝电商业务场景》API接口教程获得淘口令真实url

淘口令API接口的本质就是一款调用相关技术的应用程序接口&#xff0c;同时也是一种通过互联网传输数据的方式&#xff0c;可以实现各种各样的应用场景。比如企业运用在分享商品页面的过程中&#xff0c;可以简单组成一个淘口令&#xff0c;以便于分享淘口令。淘口令解析API接口…

java easyexcel 导出多级表头

maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version> </dependency> 导出行的对象 import com.alibaba.excel.annotation.ExcelIgnore; import …

基础算法--KMP字符串

KMP 算法是一个快速查找匹配串的算法&#xff0c;它的作用其实就是本题问题&#xff1a;如何快速在「原字符串」中找到「匹配字符串」。 在朴素解法中&#xff0c;不考虑剪枝的话复杂度是 O(m∗n) 的&#xff0c;而 KMP 算法的复杂度为 O(mn)。 KMP 之所以能够在O(mn) 复杂度内…

leetCode 213. 打家劫舍 II 动态规划 房间连成环怎么偷呢?

213. 打家劫舍 II - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装…

websocket连接实例

websocket连接 此篇websocket是最简单的运用&#xff0c;虽然简单&#xff0c;但也是需要注意 还有其它方法货协议&#xff0c;比如socket.js等。今天时间不充裕虽然例子都写好了&#xff0c;下次更新websocket所有相关的东西。提前想了解的&#xff0c;可私信 前端 var webs…

Spring Cloud Stream Kafka(3.2.2版本)使用

问题 正在尝试只用Spring Cloud Stream Kafka。 步骤 配置 spring:cloud:function:definition: project2Building stream:kafka:binder:brokers: xxxx:9002configuration:enable.auto.commit: falsesession.timeout.ms: 30000max.poll.records: 30allow.auto.create.top…

PHP Web 开发基础

PHP是动态类型的Web开发的脚本语言&#xff0c;PHP以页面文件作为加载和运行的单元&#xff0c;PHP现在有了Composer作为开发包管理。 1.使用Composer管理依赖 自从.NET开发用了Nuget管理程序集依赖&#xff0c;我就再也离不开它了&#xff0c;幸亏Java中也有Maven管理jar包&…

如何定时备份使用Docker构建的MySQL容器中的数据库

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的编码爱好者 大家好&#xff0c;我是 DevO…

PIE:1979-2018年中国气温数据产品(空间分辨率为0.1º)

简介 中国气温数据产品包含1979-2018年期间中国的近地表气温数据&#xff08;单位为摄氏度&#xff09;&#xff0c;时间分辨率为每日&#xff0c;空间分辨率为0.1。本产品集成了再分析数据&#xff08;ERA5、CMFD&#xff09;、遥感数据&#xff08;MODIS&#xff09;、原位数…

php eayswoole node axios crypto-js 实现大文件分片上传复盘

不啰嗦 直接上步骤 步骤1.开发环境配置 项目需要node.js 做前端支撑 官网下载地址&#xff1a; http://nodejs.cn/download/ 根据自己需要下载对应的版本,我下载的是windows系统64位的版本。 包下载好后 进行安装&#xff0c;安装步骤在此省略... 测试是否安装成功 …

蓝海彤翔亮相2023新疆网络文化节重点项目“新疆动漫节”

9月22日上午&#xff0c;2023新疆网络文化节重点项目“新疆动漫节”&#xff08;以下简称“2023新疆动漫节”&#xff09;在克拉玛依科学技术馆隆重开幕&#xff0c;蓝海彤翔作为国内知名的文化科技产业集团应邀参与此次活动&#xff0c;并在美好新疆e起向未来动漫展映区设置展…

C#生成自定义海报

安装包 SixLabors.ImageSharp.Drawing 2.0 需要的字体&#xff1a;宋体和微软雅黑 商用的需要授权如果商业使用可以使用方正书宋、方正黑体&#xff0c;他们可以免费商用 方正官网 代码 using SixLabors.Fonts; using SixLabors.ImageSharp; using SixLabors.ImageSharp.Draw…

python切分字符串

在Python中&#xff0c;您可以使用不同的方法来切分字符串&#xff0c;具体取决于您的需求和字符串的结构。以下是一些常见的方法&#xff1a; 使用split()方法&#xff1a; split()方法允许您根据指定的分隔符将字符串切分成子字符串&#xff0c;并返回一个包含这些子字符串的…

使用SPY++查看窗口信息去排查客户端UI软件问题

目录 1、使用SPY查看窗口的信息 2、使用SPY查看某些软件UI窗口用什么UI组件实现的 2.1、查看海康视频监控客户端安装包程序 2.2、查看华为协同办公软件WeLink 2.3、查看字节协同办公软件飞书 2.4、查看最新版本的Chrome浏览器 2.5、查看小鱼易连视频会议客户端软件 2.6…

C/S架构学习之UDP服务器

UDP服务器的实现流程&#xff1a;一、创建用户数据报套接字&#xff08;socket函数&#xff09;&#xff1a;通信域选择IPV4网络协议、套接字类型选择数据报式&#xff1b; int sockfd socket(AF_INET,SOCK_DGRAM,0); 二、填充服务器的网络信息结构体&#xff1a;1.定义网络信…

Java初始化大量数据到Neo4j中(一)

背景&#xff1a;我们项目第一次部署图数据库&#xff0c;要求我们把现有的业务数据以及关系上线第一时间初始化到Neo4j中。开发环境数据量已经百万级别。生成环境数据量更多。 我刚开始开发的时候&#xff0c;由于对Neo4j的了解并没有很多&#xff0c;第一想到的是用代码通用组…

Mybatis 批量修改数据,,并判断非空数据插入

方法一&#xff1a; <update id"updateListPO"> <foreach collection"list" separator";" item"item">UPDATE project_quotation_item<SET>product_num #{item.productNum},product_price_total #{item.pr…

CIP或者EtherNET/IP中的PATH是什么含义?

目录 SegmentPATH举例 最近在学习EtherNET/IP&#xff0c;PATH不太明白&#xff0c;翻了翻规范&#xff0c;在这里记个笔记。下面的叙述可能是中英混合&#xff0c;有一些是规范中的原文我直接搬过来的。我翻译的不准确。 Segment PATH是CIP Segment中的一个分类。要了解PATH…

每日一题 322零钱兑换(完全背包)(灵神版本)

题目 与01背包的区别就是可以重复拿一件物品 零钱兑换 给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff…