开关问题(等级考试 8 级 2023-2-10 T2)
Posted 王浩泽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开关问题(等级考试 8 级 2023-2-10 T2)相关的知识,希望对你有一定的参考价值。
题目
这道题目用暴力即可,两种方法,第一种用的是暴力dfs不用多讲
第二种方法细讲,先开 int s[N] 当s[i]的第j位为1是表示i j相关联,反之不相关连,当然了s[i][i]=1,有点类似邻接矩阵
枚举任意操作开关的⽅案时,也可以使⽤⼆进制数来枚举。具体来说,枚举2到2^n之内的所
有数字,⼀个数字的第i位是1则表⽰操作第i个开关。
程序:
#include<bits/stdc++.h> using namespace std; int k,n,m,s,T,v[50]; int main() ios::sync_with_stdio(false); cin>>k; while(k--) s=0; T=0; memset(v,0,sizeof v); cin>>n>>m; for(int i=0;i<n;i++) int t; cin>>t; s|=t<<i; for(int i=0;i<n;i++) int t1; cin>>t1; T|=t1<<i; for(int i=0;i<n;i++) v[i]|=1<<i; for(int i=0;i<m;i++) int j,k; cin>>j>>k; if(j==0&&k==0) break; j--; k--; v[j]|=1<<k; int num=0; for(int i=0;i<(1<<n);i++) int t=0; for(int j=0;j<n;j++) if((i>>j&1)==1) t^=v[j]; if((s^t)==T) num++; printf("%d\\n",num); return 0;
以上是关于开关问题(等级考试 8 级 2023-2-10 T2)的主要内容,如果未能解决你的问题,请参考以下文章