CF449D Jzzhu and Numbers 题解

news2024/11/18 13:36:42

题意

给定 A 1 . . . . A n A_1....A_n A1....An,选任意个数使得它们异或和为 0 0 0,求方案数。

思路

很朴素的想法是枚举每个数,然后进行 0-1 背包方案数统计,时间复杂度 O ( n × n ) O(n \times n) O(n×n)

而根据前面几题的经验,这种与运算等于 0 0 0 且统计数量的题,应该和 SoS dp 有关。

f ( x ) f(x) f(x) 的设计

如果采用一般 SoS dp 的定义, f ( x ) f(x) f(x) 表示的是多少个数是 x x x 的子集, g ( x ) g(x) g(x) 表示选择的数的与和是 x x x 的子集的方案数。

两者并无直接联系,需要做些调整,有两种方式:重新设计状态或者状态取反。

容斥原理统计方案数

f ( x ) f(x) f(x) x x x 是多少个数的子集。

那么若 x x x 二进制下的第 i i i 位为 1 1 1 f ( x ) f(x) f(x) 对应集合中的任意一个数,应满足数第 i i i 位为 1 1 1

g ( x ) g(x) g(x) x x x 是选择的数的与和的子集的方案数。

那么若 x x x 二进制下的第 i i i 位为 1 1 1 g ( x ) g(x) g(x) 对应集合中的任意一组选择方案,应满足选择的数的第 i i i 全部均为 1 1 1

所以 g ( x ) g(x) g(x) 对应集合中的元素均属于 f ( x ) f(x) f(x) 对应集合,得 g ( x ) = 2 f ( x ) − 1 g(x)=2^{f(x)}-1 g(x)=2f(x)1(减掉空集的情况)。

A = { 0 , 1 , 2 , 3 } A=\lbrace {0,1,2,3} \rbrace A={0,1,2,3} 为例,下图中代表的是 g ( x ) g(x) g(x) 所对应的集合:
在这里插入图片描述
答案即为灰色部分。

考虑采用容斥原理求解并集:若二进制中 1 1 1 的个数为奇数,则符号为正,反之为负。

对于 f ( x ) f(x) f(x) 的求解

1. 改转移方程

一般的 SoS dp 中,统计 m a s k mask mask 的子集,有:

S ( m a s k , i ) = { S ( m a s k , i − 1 ) i t h    b i t    o f f S ( m a s k , i − 1 ) ∪ S ( m a s k ⊕ 2 i , i − 1 ) i t h    b i t    o n S(mask, i)=\begin{cases} S(mask, i-1) & i^{th} \,\, bit \,\, off\\ S(mask, i-1) \cup S(mask \oplus 2^i,i-1)& i^{th} \,\, bit \,\, on\\ \end{cases} S(mask,i)={S(mask,i1)S(mask,i1)S(mask2i,i1)ithbitoffithbiton

现统计 m a s k mask mask 是哪些数的子集,有:

S ( m a s k , i ) = { S ( m a s k , i − 1 ) i t h    b i t    o n S ( m a s k , i − 1 ) ∪ S ( m a s k ⊕ 2 i , i − 1 ) i t h    b i t    o f f S(mask, i)=\begin{cases} S(mask, i-1) & i^{th} \,\, bit \,\, on\\ S(mask, i-1) \cup S(mask \oplus 2^i,i-1)& i^{th} \,\, bit \,\, off\\ \end{cases} S(mask,i)={S(mask,i1)S(mask,i1)S(mask2i,i1)ithbitonithbitoff

code version 1

2. 取反后统计

a a a 取反为 a ′ a' a b b b 取反为 b ′ b' b

a ⊆ b a\sube b ab,那么 b ′ ⊆ a ′ b' \sube a' ba

若有 k k k 个数是 m a s k ′ mask' mask 的子集,那么 f ( m a s k ) = k f(mask)=k f(mask)=k

code version 2

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

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

相关文章

linux——解压和压缩

目录 1.压缩格式 2. tar命令 3.tar命令压缩 4. tar解压 5. zip命令压缩文件 6. unzip 命令解压 7. 总结 1.压缩格式 2. tar命令 3.tar命令压缩 4. tar解压 5. zip命令压缩文件 6. unzip 命令解压 7. 总结

DragGAN windows 部署逼坑指南

可参看B站视频:【DragGAN开源】DragGAN win11 部署逼坑指南_哔哩哔哩_bilibili 报错信息如下: Setting up PyTorch plugin "bias_act_plugin"... Failed! ninja is required to load c extensions 环境配置: cuda:12.1visual …

C++vector动态容器类

1、std::vector::push_back&#xff08;尾差&#xff09; 1.1、std::vector::operator[] 意思为&#xff1b; 访问元素 返回对vector容器中位置n的元素的引用。 void test_vector2() {vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);/…

这个元宇宙平台真是拼了!新上线十套模板,帮您打造虚拟展览

导语&#xff1a; 随着数字技术的不断发展&#xff0c;线上虚拟展览正成为越来越多企业和组织的营销利器。在众多的虚拟展厅平台中&#xff0c;蛙色3DVR展厅凭借其独特的优势和特点&#xff0c;成为行业中备受关注的创新解决方案。 第一部分&#xff1a;展厅的优势和特点 1.便…

多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab蛇群算法(SO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,SO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,…

三项认可,数据库透明加密获“年度优秀密码产品奖”

6月28日&#xff0c;杭州市商用密码应用协会第一届第三次会员大会成功召开&#xff0c;大会审议了2022年度工作总结及2023年度活动计划&#xff0c;发布《2023商用密码产业链总览》。为扎实推进杭州市商用密码、信创在各领域的应用推广&#xff0c;本次大会对在密码技术开发与创…

ATFX国际:原油收盘价连续5个交易日低于70美元

ATFX国际&#xff1a;大宗商品的价格是全球经济的晴雨表&#xff0c;当价格进入历史高位区间时&#xff0c;意味着商品需求旺盛&#xff0c;全球经济大概率处于繁荣期&#xff1b;当价格由历史高位向历史低位区间运行时&#xff0c;意味着全球经济大概率正从繁荣期向衰退期转变…

JKD动态代理

在Java的动态代理机制中&#xff0c;有两个重要的类和接口&#xff0c;一个是InvoInvocationHandler&#xff08;接口&#xff09;、Proxy&#xff08;类&#xff09;&#xff0c;这一个类和接口是我们动态代理所必须用到的。 InvocationHandler接口&#xff1a; 每个动态代理…

学习系统编程No.27【深入信号处理】

引言&#xff1a; 北京时间&#xff1a;2023/6/27/21:43&#xff0c;刚刚更新完这个星期的第一篇博客&#xff0c;现在刚好趁热打铁&#xff0c;看看写到11点左右&#xff0c;该篇博客能完成多少&#xff0c;并且今天和我预想的一样&#xff0c;通过早睡&#xff0c;成功在7点…

容器访问外部网络之ip_forward数据包转发

文章目录 1 问题解决1.1 问题1.2 原因1.3 解决临时打开&#xff1a;永久打开&#xff1a; 2 net.ipv4.ip_forward内核参数通俗解释3 在Linux中验证并实践net.ipv4.ip_forward设置 IP 地址设置路由信息打开 IP Forward 功能关闭主机 R 的防火墙和 SeLinux验证容器技术其它 4 常用…

< vue + ElementUi 组件封装:实现弹窗展示富文本数据,允许全文搜索高亮显示搜索内容 >

实现弹窗展示富文本数据&#xff0c;允许全文搜索高亮显示搜索内容 &#x1f449; 前言&#x1f449; 一、效果演示&#x1f449; 二、实现思路&#x1f449; 三、实现案例&#x1f44d; 卷王必胜&#xff01;往期内容 &#x1f4a8; &#x1f449; 前言 在 Vue elementUi 开…

私域流量怎么运营?

最近几年&#xff0c;随着微信社群营销的兴起&#xff0c;互联网上出现了一种火爆的变现模式&#xff0c;即将流量引入微信个人号或社群&#xff0c;并通过活动、促销和私聊等方式进行转化&#xff0c;从而为企业或个人带来变现&#xff0c;这就是私域流量变现。 实际上&#x…

ARMv8 - 安全机制 - 异常等级

简介 ARMv8架构处理器有一套异常等级&#xff08;Exception level&#xff09;机制&#xff0c;分成4个等级&#xff08;EL0 ~ EL3&#xff09;。处理器运行时会处于其中的某个等级并且可以进行等级切换。 资源差异 每个异常等级都拥有一些自己版本的特殊寄存器&#xff0c;…

基于大数据技术对基金分析-python

提示&#xff1a;本文为个人原创&#xff0c;仅供技术探讨与交流&#xff0c;对实际投资并不造成建议。 基于大数据技术对基金分析-python 前言一、数据获取&#xff1a;python爬虫1).从天天基金数据接口获取数据2).爬虫前期准备3).爬虫具体实现 二、数据清洗及计算指标1.过滤数…

高性能计算工程师工资一般多少?

由于近两年深度学习的迅速崛起&#xff0c;超算互联网的普及以及AIGC的大规模应用&#xff0c;各行各业对高性能计算工程师的需求大涨&#xff0c;因此高性能计算工程师的工资也在逐年上涨中&#xff0c;并频频爆发抢人大战。 甚至年薪百万依然难以招到合适的人才。 有很多大厂…

Android JetPack 深入分析ViewModel源码

文章目录 前言源码分析ViewModel是如何创建的&#xff1f;ViewModelProvider(this)做了什么&#xff1f;小结 get(MyViewModel::class.java)做了什么&#xff1f;小结 ViewModel是如何实现配置更改后数据恢复的&#xff1f;整体时序图 结语 前言 本文主要分析ViewModel相关源码…

如何提高项目估算精准度 关键看3方面

项目估算非常重要&#xff0c;这直接关系着项目的成本和收入&#xff0c;如果估算不准确&#xff0c;将为项目带来较大风险。一般软件规模可以用多种方式进行估算&#xff0c;但是用功能点估算方式更准确&#xff0c;而自动估算让估算更快速&#xff0c;我们以CoCode需求分析工…

ChatGpt能够用来做什么

作为计算机从业人员&#xff0c;chatgpt能够从多方面提高大家的工作效率&#xff0c;主要包括以下几点&#xff1a; 技术问题解答&#xff1a;当遇到技术问题时&#xff0c;可以向ChatGPT提问并获取解答。ChatGPT可以提供相关的知识、文档和示例代码&#xff0c;帮助程序员快速…

vue2封装单张图片上传(常用于身份证正反面)

一.实现效果 二.入参 props: {defaultImg: {//默认位置的照片type: String,default: "",},uploadWidth: {//照片框的宽度type: String,default: "148px",},}, 另外如果修改了宽度的话&#xff0c;在外部组件需要用scss重写一下样式 /deep/ .el-upload-lis…

芯片中的上百亿个晶体管是如何设计的?

2021年4月21日&#xff0c;在芯片界的顶级会议Hot Chips大会上&#xff0c;Cerebras Systems公司发布了一款晶圆级引擎芯片——Wafer Scale Engine 2。 这款芯片采用台积电7纳米工艺制程&#xff0c;拥有85万个AI核心&#xff0c;包含2.6万亿个晶体管&#xff0c;面积为46225平…