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

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

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

思路

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

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

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

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

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

code

最后记得特判,比如 \(1\times 1\) 的矩阵之类的。

点击查看代码
#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.vanclimg.com/news/706.html

相关文章:

  • DE_aemmprty 草稿纸合集
  • 题解:P13308 故障
  • mmap提高LCD显示效率
  • 用 Python 构建可扩展的验证码识别系统
  • Java学习Day28
  • 在运维工作中,Dockerfile中常见指令有哪些?
  • 英语_阅读_Rivers are important in culture_单词_待读
  • 题解:P12151 【MX-X11-T5】「蓬莱人形 Round 1」俄罗斯方块
  • 在运维工作中,docker封闭了哪些资源?
  • SciTech-EECS-Library: img2pdf 与 pdf2image : Python 的 pdf 与 image 双向转换库
  • 深度学习(pytorch量化)
  • 在运维工作中,Docker怎么清理容器磁盘空间?
  • 生成函数
  • CVE-2021-45232 Apache APISIX Dashboard身份验证绕过漏洞 (复现)
  • 在运维工作中,如果运行的一个容器突然挂了,如何排查?
  • IIS中配置HTTPS证书的详细步骤
  • 李超线段树
  • 非常值得学习渲染入门的一个教程
  • Linux开机自动登录的一种方法
  • 7月28日
  • 2025 ZR暑假集训 CD联考 Day2 E 环球旅行
  • zk后集训
  • 乘法逆元(部分施工)、exgcd
  • 夏令营Ⅲ期
  • 集成学习算法
  • K 近邻算法
  • 二叉树 (动态规划)
  • 1 引言(1.1 - 1.5)
  • goethereum-账户 - Charlie
  • Qt播放音频,支持进度条,设置语速,播放暂停