当前位置: 首页 > news >正文

P13493 【MX-X14-T3】心电感应 题解

P13493 【MX-X14-T3】心电感应

思路

大家好,我不会优化,于是我使用暴力通过了这个题。

首先我们有一个很直观的想法是去枚举小 C 问的是哪些人,然后去检验可不可以做到确定答案。
如何判断一种状态是否可行呢?事实上,如果任意一个人,其存在一种状态被询问且这种状态与被锚定的那个人不同,那么这个人就可以被排除了。

按照这个模拟,我们可以得到一个 \(O(n^32^n)\) 的“优秀”算法。考虑优化,发现不会,然后考虑有没有些别的东西可以优化复杂度。

发现我们实际上只需要维护所谓的“判定性问题”,也就是枚举完每一种状态后,我们只需要判定一下是否存在有人在询问的这些特征里与当前枚举的人一模一样。
于是想到什么?bitset!!!

考虑预处理出每一对人之间特征有哪些不一样,用 bitset 存下来。最后在遍历特征的时候遍历判断是否完全包含询问状态,如果包含当前状态就无解。

预处理的复杂度是 \(O(n^3)\),DP 主体的复杂度是 \(O(\frac{n^32^n}{\omega })\),其中 $\omega $ 是 32,可以认为是 bitset 自带的优化复杂度。

code

最后记得特判,比如 \(1\times 1\) 的矩阵之类的。
然后喜提最劣解 /kk。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int N=255;
int n,m,a[N][N],tmp[N];
vector <int> p[N];
bitset <N> t[N][N];
signed main(){ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>a[i][j];for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){if(i==j)continue;for(int k=1;k<=m;k++)if(a[i][k]==a[j][k])t[i][j]^=(1<<(k-1));}if(n==1){cout<<'0';return 0;}for(int k=1;k<=n;k++){int ans=m+1;for(int s=1;s<=(1<<m)-1;s++){int sign=0,cnt=0;vector <int> q;bitset <N> tmp;for(int j=0;j<m;j++)if((s>>j)&1)tmp^=(1<<j),cnt++;for(int i=1;i<=n;i++){if(i==k)continue;bitset <N> now=tmp&t[k][i];if(now==tmp){sign=1;break;}}if(!sign)ans=min(ans,cnt);}if(ans==m+1)cout<<"-1 ";else cout<<ans<<' ';}return 0;
}

结果刚开始写的时候已经比赛开始很久了,一开始又一直在想假的贪心做法获得了 0 分的好成绩。刚写完这道题又被教练叫去运动了,就只写了这一道题(身败名裂了)。

http://www.sczhlp.com/news/747.html

相关文章:

  • uni-app项目跑APP报useStore报错
  • DE_aemmprty 草稿纸合集
  • 22天
  • 基于 Python 的简易验证码识别系统设计与实现
  • java语法的学习笔记
  • 机械运动
  • 【2025.7.28】模拟赛T4
  • 《构建之法》读后感
  • 亚马逊发布TEACh数据集训练家用机器人
  • 日记
  • 完全使用TRAE和AI 开发一款完整的应用----第一周
  • CentOS Stream 9上部署FTP应用服务的两种方法(传统安装和docker-compose)
  • SeuratExtend 可视化教程(1):单细胞分析的高颜值绘图指南
  • SpringBoot 默认配置
  • 暑假7.28
  • 计算机硬件:RAID 0、1、5、6、10简单介绍
  • nest基础学习流程图
  • grabcad
  • 2025.7.28总结 - A
  • Python 实现基于图像处理的验证码识别
  • 2025最新程序员面试题集合 包括各大厂面试规范,面试问题
  • 浅谈基环树
  • Day 28
  • 2025.7.28
  • 《叔向贺贫》
  • 2025总结
  • AI绘画提示词
  • 记一个由tinyint类型引发的低级错误
  • Dify快速搭建问答系统
  • AGC050A AtCoder Jumper