赛前训练6 状压

news/2025/10/6 16:54:43/文章来源:https://www.cnblogs.com/XOF-0-0/p/19127733

A

简单树上差分.

B

维护 \(d_{i,j}\) 表示人 \(i\) 在第 \(j\) 位与哪些人有区别.预处理即可.

对于每个人,枚举提问的二进制状态;对于提问的每个二进制位,将它们的 \(d\) 全部拼起来,若能拼成 ((1<<n)-1)^(1<<i),则产生 \(c(j)\) 的贡献,其中 \(c(x)\) 代表 \(x\) 在二进制下 \(1\) 的个数, \(j\) 表示当前提问状态.

实现
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
//#define int long long
using namespace std;const int N=25;
int n,m;
int a[N][N],diff[N][N];signed main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n>>m;for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>a[i][j];for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<m;k++)if(a[i][k]!=a[j][k])diff[i][k]|=(1<<j);for(int i=0;i<n;i++){int ans=1e9;for(int j=0;j<(1<<m);j++){int cnt=0,person=0;for(int k=0;k<m;k++)if((j>>k)&1)person|=diff[i][k],cnt++;//cout<<person<<'\n';if((person|(1<<i))==(1<<n)-1)ans=min(ans,cnt);}cout<<(ans==1e9?-1:ans)<<' ';}return 0;
}

C

\(n \le 16\),直接状压 dp.

\(dp_i\) 表示字符串选取情况为 \(i\) 时的 trie 树节点最小值.

初始 \(dp_{1<<i}=|s_i|\),答案 \(dp_{(1<<n)-1}\).

转移考虑两棵 trie 树合并成 \(i\),易得 \(dp_i=dp_j+dp_{i \oplus j}-len(i)\).其中 \(len(i)\) 表示 \(i\) 状态下的 LCP.

这东西如何维护?我们发现,一堆字符串重排之后的 LCP,是由它们每种字母的最小出现次数决定的.于是可以维护 \(lcp(i,j)\) 表示 \(i\) 状态下字母 \(j\) 的最小出现次数.要维护 \(lcp(i,j)\),则必然还需要维护 \(cnt(i,j)\) 表示 \(s_i\) 中字母 \(j\) 的出现次数.这样,统计出 \(cnt\) 后,\(lcp\) 只需要枚举状态然后对它们取 \(\min\),而 \(len(i)\) 只需要加上 26 个字母的 \(lcp\) 即可.

实现
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdlib.h>
#include <vector>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define int long long
using namespace std;const int N=1<<17,M=48,K=1e6+5;
int n;
int len[N],lcp[N][M],cnt[K][M],dp[N];
string s[M];signed main(){ios::sync_with_stdio(0);cin.tie(0);cin>>n;memset(dp,0x3f,sizeof dp);memset(lcp,0x3f,sizeof lcp);for(int i=0;i<n;i++){cin>>s[i];dp[1<<i]=s[i].size();for(int j:s[i])cnt[i][j-'a']++;}for(int i=0;i<(1<<n);i++){for(int j=0;j<n;j++)if((i>>j)&1)for(int k=0;k<26;k++)lcp[i][k]=min(lcp[i][k],cnt[j][k]);for(int j=0;j<26;j++)len[i]+=lcp[i][j];}for(int i=0;i<(1<<n);i++)for(int j=i;j;j=i&(j-1))dp[i]=min(dp[i],dp[j]+dp[i^j]-len[i]);cout<<dp[(1<<n)-1]+1;return 0;
}

D

见往期笔记.

总结

状压:

题型识别:见字符集想到状压见数据范围想到状压

集合观念:二进制状态表示集合枚举子集进行 dp

其他技巧:预处理思想异或提取子区间

以上.

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

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

相关文章

排序综合

1、基础排序(cmp函数自定义排序) `struct Ren { int a;int b; }ren[1000010]; bool cmp(const Ren& i, const Ren& j) { if (i.zhi < j.zhi) { return true; } else { if (i.zhi == j.zhi) { if (i.ji &g…

Java从入门到精通 - 常用API(一) - 详解

Java从入门到精通 - 常用API(一) - 详解2025-10-06 16:50 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: bloc…

NKOJ全TJ计划——NP11745

题目内容 最小割板子 小 E 有一棵有\(n\) 个点的无根树,它的节点编号为\(1\) 到\(n\) ,其中第\(i(i\in [1,n-1])\) 条边连接节点\(u_i\)和\(v_i\) 。同时他还有\(m\)条树上的路径,第\(i\)条路径为从节点\(a_i\)到\(…

InfinityFree教程 ——免费搭建属于你的网站

本文讲述了如何通过 "InfinityFree" 搭建免费的纯前端网站💖** InfinityFree 简介** InfinityFree是一个提供免费虚拟主机服务的平台,提供免费虚拟主机。每个账户可创建3个站点,支持自定义域名(需使用其…

深入解析:npm、yarn幽灵依赖问题

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

营销网站的案例分析wordpress用图床好还是

在快节奏的现代生活中&#xff0c;个人债务问题似乎已成为许多人不得不面对的挑战。正确处理个人债务&#xff0c;不仅关系到个人信用和财务状况&#xff0c;更是实现财务自由的重要一步。本文将为您提供一些实用的建议&#xff0c;帮助您优雅地解决个人债务问题&#xff0c;走…

10.6 模考 T4(QOJ 1836)

题意:给定 \(n\) 个点 \(m\) 条边的无向图,定义“花”为一个拥有 \(4\) 个结点的导出子图,这个导出子图有 \(1\) 条边或 \(5\) 条边。定义“叶”为一个拥有 \(4\) 个结点的导出子图,这个导出子图有 \(3\) 条边,且…

iTunes 无法备份 iPhone:10 种解决方法 - 详解

iTunes 无法备份 iPhone:10 种解决方法 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

实用指南:【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案

实用指南:【Node.js 深度解析】npm install 遭遇:npm ERR! code CERT_HAS_EXPIRED 错误的终极解决方案pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: b…

关于调和级数估算前n项的和

我们要估算 \(\displaystyle\sum^n_{i = 1}\dfrac{1}{i}\)。 我们知道 \(\displaystyle\sum^n_{i = 1}\dfrac{1}{i}\approx \int_1^n\dfrac{1}{i} = (\ln\left|i\right|)\bigg |^n_1 = \ln n - \ln 1 = \ln n\)。 因此…

专业的网站优化黑马前端学费多少

CCIE理论-第五篇-SDA-2 DNA Center 展示一下web的界面哈 其实就类似平时弄的web的防火墙呀,其他设备等 弹性子网 这一章来讲讲弹性子网 stretched subnets allow an ip subnet to be :stretched:vla the overlay 拉伸子网允许通过覆盖“拉伸”IP子网1基于主机IP的流量…

Windows install RabbitMQ via PowerShell via administrator role

//Run PowerShell as Administrator role //Run below commands respectively //First command Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.N…

Windows漏洞利用技巧:虚拟内存访问陷阱(2025更新)

本文详细介绍了在Windows系统中构建虚拟内存访问陷阱的技术方法,重点分析了Windows 11 24H2新特性如何让攻击者能够利用本地SMB服务器进行内存访问延迟攻击,为利用TOCTOU类型内核漏洞提供了新的攻击向量。Windows漏洞…

北京单页营销型网站tp3企业网站开发百度云

1 概述 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境,多线程环境可以采用并发包下的concurrentHashMap HashMap 实现了Serializable接口&#x…

深圳福田站网站用户体验模型

Flutter开发过程中&#xff0c;对于视频播放的三方组件有很多&#xff0c;在Android端适配都挺好&#xff0c;但是在适配iPhone手机的时候&#xff0c;如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下&#xff0c;无法…

Python编译期优化:隐藏在代码背后的效率魔法

Python编译期优化:隐藏在代码背后的效率魔法 Python常被认为是解释型语言,但实际上它采用了"编译→解释"的混合执行模式。在将源代码转换为字节码的编译阶段,Python解释器会进行一系列优化,显著提升程序…

网站文件夹名百度推广关键词怎么设置好

参考&#xff1a;基于知识库和 LLM 的问答系统经验分享 - 知乎 (zhihu.com) 一、基于LLM的问答系统架构 比较常见的开源 LLM 的问答系统都会遵循下图这种结构去进行设计&#xff1a; 加载文件 -> 读取文本 -> 文本分割 -> 文本向量化 -> 问句向量化 -> 在文本…

无需安装的Photoshop:网页版完整使用指南与在线图片编辑技巧

​ 你还在为安装庞大的Photoshop软件而烦恼吗?面对几百兆的安装包、繁琐的配置流程,确实让人头疼。特别是当你只是偶尔需要修个图、换个证件照背景,或是简单处理头像时,真的不必大费周章安装一个“重量级”应用。今…

求阶

阶:满足 \(x^{k}\equiv 1(\text{mod}\ p)\) 的最小 \(k\)。 首先,若 \(x\not\perp p\),则无解。 令 \(f(k) = x^k\mod p\) 若有解,则由费马小定理知,\(k = p - 1\) 是 \(f(x) = 1\) 的一个解。 令其最小解为 \(k_…

wordpress 网站显示加载时长网站 公司形象

本文由178论坛会员&#xff1a;东东呛 转载&#xff0c;如果你是原作者请联系我们&#xff0c;我们会对原创作者给予奖励。(当然您也可以在评论回复表达看法&#xff0c;但是论坛会有更丰富的奖励哦。)朵朵快满级了~~~由于内测只开到50级~~~可还剩下一堆任务~所以刷怪刷到49级半…