zoukankan      html  css  js  c++  java
  • 3175: [Tjoi2013]攻击装置

    所有的白格向能攻击到的黑格连单向边,然后最大独立集就行了。细节看代码吧。

    RunID User Problem Result Memory Time Language Code_Length Submit_Time
    411274 lbz007 3175 Accepted 20068 kb 2212 ms Pascal/Edit 1637 B 2013-05-13 17:19:41
     1 const
     2   x:array[1..8]of longint=(-1,-2,1,2,-1,-2,1,2);
     3   y:array[1..8]of longint=(-2,-1,-2,-1,2,1,2,1);
     4 var
     5   n,i,j,k,numa,ans,ee:longint;
     6   b,link,e,head,next:Array[1..1000000]of longint;
     7   d,a:Array[1..200,1..200]of longint;
     8   c:char;
     9 procedure add(u,v:longint);
    10   begin
    11   inc(ee);next[ee]:=head[u];head[u]:=ee;e[ee]:=v;
    12   //inc(ee);next[ee]:=head[v];head[v]:=ee;e[ee]:=u ;
    13   end;
    14 function find(x:longint):boolean;
    15   var j:longint;
    16   begin
    17   j:=head[x];
    18   while j<>0 do
    19     begin
    20     if b[e[j]]<>i then
    21       begin
    22       b[e[j]]:=i;
    23       if (link[e[j]]=0) or (find(link[e[j]])) then
    24         begin
    25         link[e[j]]:=x;
    26         exit(true);
    27         end;
    28       end;
    29     j:=next[j];
    30     end;
    31   exit(false);
    32 end;
    33 begin
    34   readln(n);
    35   for i:=1 to n do
    36     begin
    37     for j:=1 to n do
    38       begin
    39       read(c);if c='0' then inc(numa);
    40       a[i,j]:=ord(c)-ord('0');
    41       end;
    42     readln;
    43     end;
    44   for i:=1 to n do
    45     for j:=1 to n do
    46       begin inc(k);d[i,j]:=k;end;
    47   for i:=1 to n do
    48     for j:=1 to n do
    49       if (a[i,j]=0)and((i+j) mod 2=0) then
    50         for k:=1 to 8 do
    51           if (i+x[k]>0)and(i+x[k]<=n)and(j+y[k]>0)and(j+y[k]<=n)then
    52             if a[i+x[k],j+y[k]]=0 then
    53               add(d[i,j],d[i+x[k],j+y[k]]);
    54  
    55   for k:=1 to n do
    56     for j:=1 to n do
    57       if (k+j) mod 2=0 then
    58         if a[k,j]=0 then
    59           begin
    60           i:=d[k,j];
    61           if find(i) then inc(ans);
    62           end;
    63   writeln(numa-ans);
    64 end.
    View Code
  • 相关阅读:
    第五周的学习进度情况
    周末经历之小体会
    构建之法阅读笔记5
    第四周的学习进度情况
    hashMap中如何形成循环链表的?
    代理模式
    sharing-jdbc实现读写分离及分库分表
    分库分表
    读写分离实现方式
    MySQL主从复制
  • 原文地址:https://www.cnblogs.com/lbz007oi/p/3078122.html
Copyright © 2011-2022 走看看