【题意】
同poj1830,但是求的是最小开关次数,保证有解
【题解】
高斯消元,再对自由元暴力枚举。暴力的时候要记得剪枝。
高斯消元优化很悬。。。其实有n个自由元的时候就相当于纯暴力了。似乎还有种可靠的折半写法。。。。
反正就当练习高斯消元了。
【代码】
1 #include2 #include 3 #include 4 using namespace std; 5 struct node 6 { 7 int c,vec[40]; 8 }a[40]; 9 int n,m,ans,X[40],dt[40],kw[40],po,cnt,x,y;10 void dfs(int t,int s)11 {12 if (s>=ans) return;13 if (t>cnt)14 { 15 for (int i=po;i;--i)16 {17 int y=a[i].c;18 for (int j=kw[i]+1;j<=n;++j)19 if (a[i].vec[j]) y^=X[j];20 X[kw[i]]=y;21 s+=y;22 } 23 if (s