zoukankan      html  css  js  c++  java
  • BZOJ3198:[SDOI2013]SPRING

    Description

    Input

    Output

    Sample Input

    3 3
    1 2 3 4 5 6
    1 2 3 0 0 0
    0 0 0 4 5 6

    Sample Output

    2

    HINT

    题解:

    一脸容斥的样子。

    枚举判断是否相同的泉水集合S,若|S|>=K,则inc(ANS,(-1)^(|S|-K)*C(|S|,K)*相同对数)

    哈希表记录、判断(我之前竟然写了类似字符串哈希的的做法,哈希值相同直接判断相同,WA惨了)。

    代码:

     1 var
     2   i,j,k,l,n,m:longint;
     3   f:array[0..200001,1..6]of int64;
     4   b:array[1..6]of longint;
     5   c:array[0..6,0..6]of int64;
     6   cc:array[0..133330]of longint;
     7   d:array[0..200001,-1..6]of longint;
     8   a:array[0..200001]of int64;
     9   ans:int64;
    10 procedure find(x,z:longint;y:int64);
    11 var i,j,l:longint;
    12 begin
    13   i:=cc[a[z]];
    14   while i>0 do
    15   begin
    16     l:=0;
    17     for j:=1 to x do if d[i,j]<>f[z,b[j]] then begin l:=1; break; end;
    18     if l=0 then begin ans:=ans+y*d[i,0]; inc(d[i,0]); exit; end;
    19     i:=d[i,-1];
    20   end;
    21   inc(m); for i:=1 to x do d[m,i]:=f[z,b[i]];
    22   d[m,0]:=1; d[m,-1]:=cc[a[z]]; cc[a[z]]:=m;
    23 end;
    24 function ss2(x:longint;y:int64):int64;
    25 var i,j,k:longint;
    26 begin
    27   ss2:=0; m:=0;
    28   for i:=0 to 133330 do cc[i]:=0;
    29   for i:=1 to n do
    30   begin
    31     a[i]:=1;
    32     for j:=1 to x do a[i]:=(a[i]*13131+f[i,b[j]])mod 133331;
    33     find(x,i,y);
    34   end;
    35 end;
    36 procedure ss(x,y:longint);
    37 var i:longint;
    38 begin
    39   if x>6 then
    40   begin
    41     if y>=k then
    42     begin
    43       if(y-k)mod 2=0 then ss2(y,c[y,k])
    44       else ss2(y,-c[y,k]);
    45     end;
    46     exit;
    47   end;
    48   ss(x+1,y);
    49   inc(y); b[y]:=x; ss(x+1,y);
    50 end;
    51 begin
    52   c[0,0]:=1;
    53   for i:=1 to 6 do
    54   begin
    55     c[i,0]:=1; c[i,i]:=1;
    56     for j:=1 to i-1 do c[i,j]:=c[i-1,j-1]+c[i-1,j];
    57   end;
    58   readln(n,k);
    59   for i:=1 to n do
    60   for j:=1 to 6 do read(f[i,j]);
    61   ss(1,0);
    62   writeln(ans);
    63 end.
    View Code
  • 相关阅读:
    IntelliJ Idea 快捷键列表
    mysql索引类型和方式
    基本git指令
    idea中deBug方法
    BeanUtils.copyProperties(A,B)使用注意事项
    MySQL字段类型
    JAVA常识1
    Redis在windows下的安装下载
    Netty
    IDEA工具
  • 原文地址:https://www.cnblogs.com/GhostReach/p/6259899.html
Copyright © 2011-2022 走看看