【JZOJ3170】挑选玩具【分治】

【JZOJ3170】挑选玩具 description ABC找到N个箱子,箱子里装着一些玩具,一共有M种玩具,编号从1到M,同一种玩具可能出现在多个箱子里。 ABC决定从中选择一些箱子,把这些箱子中的玩具聚集到一起,必须保证每种玩具至少出现一次。 问ABC一共有多少种选择方案。 analysis 对于2m2^m2m种玩具的选择情况,可以O(2m)O(2^m)O(2m)枚举哪些位没有玩具算答案 哪些位没有玩具,相当于其... 阅读详情

题目大意:

题目链接:https://jzoj.net/senior/#main/show/3170
有 n n n个箱子装着 m m m个玩具(一个玩具可以在多个箱子内),求有多少种选择箱子的方案使得每种玩具至少有一个。


思路:

设 f [ i ] f[i] f[i]表示 ∑ S 1 ( S & i = S ) \sum^{}_{S}1(S\&i=S) ∑S​1(S&i=S),也就是选择其中一些箱子,会得到一个玩具集合 S S S(状压后),如果 i i i完全包含 S S S, f [ i ] f[i] f[i]就加一。
那么 f [ M A X N − 1 − i ] f[MAXN-1-i] f[MAXN−1−i]就是没有一个玩具在集合 i i i中的方案数。
显然答案就是
∑ S − 1 ∣ S ∣ × ( 2 f [ M A X N − 1 − i ] − 1 ) \sum _S -1^{|S|}\times (2^{f[MAXN-1-i]}-1) S∑​−1∣S∣×(2f[MAXN−1−i]−1)
对于求 f f f,可以考虑使用分治。
显然 f [ i ] & f [ i + m i d ] = f [ i ] f[i]\&f[i+mid]=f[i] f[i]&f[i+mid]=f[i],因为若 f [ i ] f[i] f[i]是 a b c d abcd abcd,则 f [ i + m i d ] f[i+mid] f[i+mid]是 1 a b c d 1abcd 1abcd
这样时间复杂度就降到了 O ( 2 m log ⁡ 2 m ) O(2^m\log 2^m) O(2mlog2m)。


代码:

#include <cstdio>
#include <cstring>
using namespace std;
typedef long long ll;

const int N=1000010,MOD=1e9+7,M=(1<<20)+10;
int n,m,ans,MAXN,cnt[M],f[M],power[N];

void work(int l,int r)
{
	if (l==r)
	{
		f[l]=cnt[l];
		return;
	}
	int mid=(l+r)/2;
	work(l,mid);
	work(mid+1,r);
	for (int i=l;i<=mid;i++)
		f[i-l+mid+1]+=f[i]; 
}

int main()
{
	freopen("data","r",stdin);
	scanf("%d%d",&n,&m);
	MAXN=(1<<m);
	for (int i=1;i<=n;i++)
	{	
		int sum,x,S=0;
		scanf("%d",&sum);
		while (sum--)
		{
			scanf("%d",&x);
			S|=(1<<x-1);
		}
		cnt[S]++;
	}
	work(0,MAXN-1);
	power[0]=1;
	for (int i=1;i<=n;i++) power[i]=power[i-1]*2%MOD;
	cnt[0]=1;
	for (int i=0;i<MAXN;i++)
	{
		if (i&1) cnt[i]=-cnt[i>>1];
			else cnt[i]=cnt[i>>1];
		ans=(ans+cnt[i]*(power[f[MAXN-1-i]]-1)%MOD)%MOD;
	} 
	printf("%d\n",(ans%MOD+MOD)%MOD);
	return 0;
}
ESP32-S3驱动雨滴传感器实战:从原理到ADC/GPIO双模式数据采集 本文详细介绍了ESP32-S3驱动雨滴传感器的实战教程,涵盖其工作原理及ADC/GPIO双模式数据采集方法。通过解析传感器利用水的导电性检测雨量的核心机制,提供了完整的硬件连接方案与软件驱动代码,包括模拟量(AO)的ADC读取和数字量(DO)的GPIO读取,并附有调试技巧,帮助开发者快速实现雨滴检测功能。 阅读详情

相关推荐

PWM控制技术+Simulink仿真详解

想要理解SVPWM控制技术,首先要了解PWM控制技术。 PWM控制技术就是对脉冲宽度进行调制的技术,通过对一系列脉冲宽度进行调制来等效获得所需要的波形(包括形状和幅值)。 PWM控制的基本原理:冲量(窄脉冲的面积)相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果(输出响应波形)基本相同,即面积等效原理;用一系列幅值相等,宽度按一定规律变化的高频脉冲序列代替期望的输出波形,多用于逆变电路的控制; PWM信号生成的方法有:计算法、调制法、跟踪法,主要对调制法进行详解 ...

小师兄的学习记录 5万+

Jzoj3170 挑选玩具

ABC找到N个箱子,箱子里装着一些玩具,一共有M种玩具,编号从1到M,同一种玩具可能出现在多个箱子里。 ABC决定从中选择一些箱子,把这些箱子中的玩具聚集到一起,必须保证每种玩具至少出现一次。 问ABC一共有多少种选择方案(1<=N<=1,000,000,1<=M<=20) 第三次看到这个题了,前两次都忘了怎么做了。。。 好的第一眼看上去可以dp做,结果发...

dianning8393的博客 190

MATLAB实战:利用扫频数据重构系统伯德图的关键步骤

本文详细介绍了如何利用MATLAB处理扫频数据并重构系统伯德图的完整实战流程。内容涵盖数据导入与清洗、增益与相位的精确计算、频率响应数据对象(frd)的构建、数据平滑与插值处理,以及最终生成专业伯德图并进行关键参数(如相位裕度)标注的方法。文章重点解决了从实测“黑盒子”系统数据出发,获取直观频率响应特性曲线的核心问题,为控制系统分析与设计提供了实用指南。

weixin_29098117的博客 397

3170. 【GDOI2013模拟4】挑选玩具

Description ABC找到N个箱子,箱子里装着一些玩具,一共有M种玩具,编号从1到M,同一种玩具可能出现在多个箱子里。 ABC决定从中选择一些箱子,把这些箱子中的玩具聚集到一起,必须保证每种玩具至少出现一次。 问ABC一共有多少种选择方案。 Input 第一行输入两个整数N和M(1<=N<=1,000,000,1<=M<=20) 接下来N行,每行首先输入Ki(...

zsjzliziyang的博客 319

【CTF-misc】java盲水印BlindWatermark工具使用

​ 盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 题目来源:NewStarCTF 2023 公开赛道 WEEK2|MISC:Jvav

qq_39972370的博客 6446

别再纠结高侧低侧了!用INA199/INA219这类集成电流检测芯片,5分钟搞定精准电流测量

本文详细解析了使用INA199/INA219等集成电流检测芯片实现精准电流测量的高效方案。通过对比传统分立元件方案,突出集成芯片在精度、温度稳定性和设计简化方面的优势,并提供硬件设计避坑指南和软件实现最佳实践,帮助开发者快速掌握电流检测技术。

weixin_42685438的博客 471

jzoj5231-序列问题【分治】

正题 题目大意 nnn个数字,求 (∑l=1n∑r=lnmin{ai}∗max{ai}(i∈[l..r]))%(109+7)(\sum_{l=1}^n\sum_{r=l}^nmin\{a_i\}*max\{a_i\}(i\in [l..r]))\%(10^9+7)(l=1∑n​r=l∑n​min{ai​}∗max{ai​}(i∈[l..r]))%(109+7) 解题思路 考虑分治,单独在半个内...

QuantAsk 658

Hermes Agent 对阵 OpenClaw:自我改进的 AI 队友

但在 2026 年 2 月,Nous Research 发布了 Hermes Agent,它带来了不同的愿景:一个不仅能够运行,还能学习的代理。在完成复杂的多步骤任务后,它会分析自己的操作并创建一个可复用的技能。对于已在使用 OpenClaw 的澳大利亚企业而言,这意味着您可以试用 Hermes Agent,而无需丢失数月的配置和自定义成果。最重要的区别在于理念:OpenClaw 是一个需要配置的工具,而 Hermes Agent 则是一个会学习的队友。OpenClaw 的技能是静态的。

xiaoshun007的专栏 1571

JZOJ 6307. 安排(归并排序+分治)

JZOJ6307. 安排 题目 Description Input Output Sample Input 6 1 3 5 6 4 2 1 2 3 4 5 6 Sample Output 4 2 3 3 6 2 5 4 5 Data Constraint Hint 题解 这是一道奇妙的题!!!!! 定义:交换两个数时,若这两个数分别是这段区间的最大值和最小值,则称此交换为合法的。 最暴...

ZSJZ_liuzian的博客 293

Python全栈入门到实战【进阶篇 2】面向对象之封装:私有属性、私有方法与@property优雅访问

_属性名真正私有方法:双下划线开头(__方法名()),Python自动名字改写,外部无法访问;约定私有方法:单下划线开头(_方法名()),仅为编程约定,外部可访问但不推荐。实战中优先使用“真正私有方法”,隐藏核心辅助逻辑。封装的本质:隐藏对象的核心数据(私有属性)和内部逻辑(私有方法),仅对外提供规范、安全的访问接口,实现数据安全与可维护性;私有属性真正私有:双下划线开头(__属性名),Python名字改写,外部无法直接访问,仅类内部可用;约定私有:单下划线开头(_属性名。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 2915

【问题解决】Python 运行报错 `ModuleNotFoundError` 全网最全解决方案,一文搞定所有导包问题

本文全面解析Python中常见的ModuleNotFoundError和ImportError问题,提供从基础到高级的解决方案。文章首先分析问题原因,包括模块未安装、环境不一致、路径问题等,然后给出7种解决方案:安装缺失模块、检查Python环境、使用虚拟环境、添加搜索路径、相对导入、setup.py安装本地包和使用__init__.py。针对Jupyter Notebook、Docker容器等常见场景提供专门解决方案,并推荐使用requirements.txt、pipenv等预防措施。最后分享调试技巧,帮

博客 914

jzoj3170-[GDOI2013模拟4]挑选玩具【容斥,状态压缩,分治】

正题 题目大意 有nnn个箱子放了若干个玩具,要求选择一些箱子使得mmm种玩具都有,求方案总数。 解题思路 设fSf_SfS​表示选择只有在集合为SSS的方案数。 然后答案考虑容斥,那么答案就是∑S(2(f(∼S))−1)∗(−1)∣S∣\sum_S (2^{(f_{(\sim S)})}-1)*(-1)^{|S|}S∑​(2(f(∼S)​)−1)∗(−1)∣S∣ 我们将集合的表示状压起来。 ...

QuantAsk 556

ROS2 Nav2 - 模型预测路径积分控制器(MPPI)

这是一个预测控制器(局部轨迹规划器),用于实现模型预测路径积分(MPPI)算法,以跟踪具有自适应避障功能的路径。它包含基于插件的 critic 函数,可影响算法的行为。它由 Aleksei Budyakov 创建,由 Steve Macenski 为 Nav2 进行改编和开发。该插件实现了 nav2_core::Controller(控制器)接口,可在整个导航堆栈中作为控制器服务器的动作服务器(controller_server)中的局部轨迹规划器使用。据测定,该控制器可在中等英特尔处理器(第四代 i5)上

机器人控制与仿真应用 3908

2019.04.13【NOIP提高组】模拟 A 组

解题报告前言JZOJ 3169 生产汽车题目分析代码JZOJ 3170 挑选玩具题目分析代码JZOJ 3171 洛谷 4594 重心[题目](https://www.luogu.org/problemnew/show/P4594)[分析+代码](https://www.luogu.org/paste/cwuaw5vf) 前言 水分警告 JZOJ 3169 生产汽车 题目 nnn个工人,mmm辆汽...

lemondinosaur的博客 409

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

欢乐纪中A组周六赛【2019.4.13】

前言 做A组被虐好惨 成绩 RankRankRank是有算别人的 RankRankRank PersonPersonPerson ScoreScoreScore AAA BBB CCC 222 巨佬WHF巨佬WHF巨佬WHF 140140140 404040 100100100 000 222 巨佬ZZY巨佬ZZY巨佬ZZY 140140140 404040 10010010...

QuantAsk 552

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

容斥、染色类计数问题

染色相关 染色问题是一类NPC问题。 它的一般形式是给定一个无向联通图G&lt;n,m&gt;G_{&lt;n,m&gt;}G<n,m>​,要求用kkk种颜色对其染色。使得每一条边所连的两个端点不同色。 这一类问题通常需要很高的时间复杂度。但在特殊的图中,这一类问题能得到很优秀的解法。 例1 jzoj6079 Problem 给定无向联通图G&l...

Algor_pro_king_John的博客 816

[JZOJ4828]最大值

题目描述给定一个含有nn个正整数的序列AA,以及一个位运算操作符opop,请求出所有Ai op Aj(1≤i<j≤n)A_i\ op\ A_j(1\le i<j\le n)中的结果的最大值。 其中opop可能是与、或和异或。 本题数据TT组数据。1≤T≤6,2≤n≤105,1≤Ai<2201\le T\le6,2\le n\le10^5,1\le A_i<2^{20}题目分析考虑枚举每一个AiA

待成熟的葡萄 713

做的中等题,难题总结【6~7月】

jzoj4612. 【NOIP2016模拟7.12】游戏(中等题) 将每一个空格看作边,与每一个划分出来的长条连边作二分图匹配,注意软石头也要被划分不然长条编号不对 jzoj4224. 【五校联考3day1】食物(中等题) 注意到预算和美味度都 $\leq 50000$,于是作状态互换dp,多重背包要用单调队列优化 jzoj4631. 【GDOI2017模拟7.15】背单词(中等题) 可...

weixin_30871905的博客 271

2016.07.01讲题小总结

Prefacesymbol钦定了五个人做杂题选讲,之前没有试过分享好题,今天算是好好玩了一把。 凑够88题好辛苦啊,有的题我花了半天才弄懂,码了半天才AC。LectureProblem 151NOD的一道题目,很简单的dpdp。酸子提出了用线段树优化连边的想法,好像可做,当初做的时候想过但是没有仔细思考,以为不可行。 WDC第一个想出dpdp做法。当时我做这题时是不知道怎么dpdp的,讲课时WD

待成熟的葡萄 787

BZOJ1577: [Usaco2009 Feb]庙会捷运Fair Shuttle 贪心+线段树

1577: [Usaco2009 Feb]庙会捷运Fair Shuttle Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 310  Solved: 171 [Submit][Status][Discuss] Description 公交车一共经过N(1 他们希望从Si到Ei去。 公交车只能座C(1 注意:对于每一群奶

Oakley 1229
上一篇: 【JZOJ2549】家庭作业【堆】
下一篇: 【P1261】服务器储存信息问题【最短路】
stoorz1023
博客等级 码龄9年 101粉丝 595原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值