HDU4200 Bad Wiring 高斯消元+枚举

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4200


题目大意:给出一些排成一列的灯,灯的亮暗用0 1 表示,每盏灯对应一个开关,每次打开或关闭某个开关,都会影响该灯与该灯左边和右边的D盏灯。给出等的初始状态,问至少操着几次开关能将等全部关掉。


分析:高斯消元,对于不唯一的解,分别枚举计算,取最小值。

实现代码如下:

/*
一排n盏等,每盏灯翻转会连动他左右各d盏灯
球关闭所有的灯的最少翻转次数
*/
#include 
#include 
#include 
using namespace std;
const int maxn=100;
const int inf=0x3fffffff;
int a[maxn][maxn+1],x[maxn],equ,var;
void Init()
{
    int d,tmp;
    scanf("%d%d",&equ,&d);
    var=equ;
    memset(a,0,sizeof(a));
    memset(x,0,sizeof(x));
    for(int i=0;i=0) a[i-j][i]=1;
            if(i+ja[mx][col]) mx=i;
        if(mx!=k)
        {
            for(int i=k;i=var) break;
           for(int r=0;r>=1;
        for(int i=k-1;i>=0;i--)
        {
          int tmp=a[i][var]%2;
          for(int j=i+1;j


你可能感兴趣的:(高斯消元)