zoukankan      html  css  js  c++  java
  • bzoj3503

    显然知道第一行就可以只道整个矩阵
    但n<=40,搜索是不行的,我们设第一行为x1~xm
    可以由轻易由第一行未知数推出第n+1行,这一步我们可以压成二进制位(因为只和奇偶有关)
    显然n+1行必须是0,由此可以列方程高斯消元即可

     1 var a,c:array[0..50,0..50] of longint;
     2     b:array[0..50,0..50] of int64;
     3     n,m,i,j:longint;
     4 
     5 procedure swap(var a,b:longint);
     6   var c:longint;
     7   begin
     8     c:=a;
     9     a:=b;
    10     b:=c;
    11   end;
    12 
    13 procedure gauss;
    14   var i,j,k,p:longint;
    15   begin
    16     k:=1;
    17     for i:=1 to m do
    18     begin
    19       j:=k;
    20       while (j<=m) and (a[j,i]=0) do inc(j);
    21       if (j>m) then continue;
    22       if j<>k then
    23       begin
    24         for p:=i to m+1 do
    25          swap(a[k,p],a[j,p]);
    26       end;
    27       for j:=k+1 to m do
    28         if a[j,i]=1 then
    29         begin
    30           for p:=i to m+1 do
    31             a[j,p]:=a[j,p] xor a[k,p];
    32         end;
    33       inc(k);
    34     end;
    35     for i:=m downto 1 do
    36     begin
    37       c[1,i]:=a[i,m+1];
    38       if a[i,i]=0 then
    39       begin
    40         c[1,i]:=1;
    41         continue;
    42       end;
    43       for j:=i+1 to m do
    44         if a[i,j]=1 then c[1,i]:=c[1,i] xor c[1,j];
    45     end;
    46   end;
    47 
    48 begin
    49   readln(n,m);
    50   for i:=1 to m do
    51     b[1,i]:=int64(1) shl int64(i-1);
    52 
    53   for i:=2 to n+1 do
    54     for j:=1 to m do
    55       b[i,j]:=b[i-1,j] xor b[i-1,j+1] xor b[i-1,j-1] xor b[i-2,j];
    56 
    57   for i:=1 to m do
    58     for j:=1 to m do
    59       if b[n+1,i] and (int64(1) shl int64(j-1))<>0 then a[i,j]:=1;
    60 
    61   gauss;
    62   for i:=2 to n do
    63     for j:=1 to m do
    64       c[i,j]:=c[i-1,j] xor c[i-1,j+1] xor c[i-1,j-1] xor c[i-2,j];
    65 
    66   for i:=1 to n do
    67   begin
    68     for j:=1 to m-1 do
    69       write(c[i,j],' ');
    70     writeln(c[i,m]);
    71   end;
    72 end.
    View Code
  • 相关阅读:
    hdu1698(线段树)
    poj3468(线段树)
    hdu1394(线段树求逆序对)
    hdu1754(线段树)
    hdu1166(线段树)
    hdu2412(树形dp)
    hdu4714(树形dp)
    hdu4705(树形dp)
    hdu4679(树形dp)
    滑动导航条
  • 原文地址:https://www.cnblogs.com/phile/p/4472960.html
Copyright © 2011-2022 走看看