Codeforces Round #766 DIV2 F問題 - Not Splitting

Source

Codeforces Round #766 DIV2 F問題 (2750pt)
Problem description

問題概要

省略

解法

省略

cLay(version 20211231-1)のコード

C++に変換後のコードはこちら

//no-unlocked
int N, K, R1[1d5], C1[], R2[], C2[];
HashMap<pair<int,int>,int> hs;
static int node, mm, a[7d5], b[], c[];
wgraph<int> g;

REP(rd_int()){
  rd(N,K,(R1--,C1--,R2--,C2--)(N));

  int x, y1, y2, st, ed, ss, ee, aa, bb, cc;
  dimcomp2 dm(K+1,K+1);

  hs.init(2*N,0);
  rep(i,N){
    if(R1[i] == R2[i]){
      x = R1[i];
      y1 = min(C1[i], C2[i]);
      y2 = max(C1[i], C2[i]);

      (aa, bb) = (dm(x,y2), dm(x+1,y2));
      hs[{aa,bb}]++;

      (x, y1, y2) = (K-1-x, K-1-y2, K-1-y1);
      (aa, bb) = (dm(x,y2), dm(x+1,y2));
      hs[{aa,bb}]++;
    } else {
      x = C1[i];
      y1 = min(R1[i], R2[i]);
      y2 = max(R1[i], R2[i]);

      (aa, bb) = (dm(y2,x), dm(y2,x+1));
      hs[{aa,bb}]++;

      (x, y1, y2) = (K-1-x, K-1-y2, K-1-y1);
      (aa, bb) = (dm(y2,x), dm(y2,x+1));
      hs[{aa,bb}]++;
    }
  }

  node = (K+1) * (K+1);
  mm = 0;
  st = dm(0, 0);
  ed = dm(K/2, K/2);

  rep(i,K+1) rep(j,K+1){
    ss = dm(i,j);
    if(i+1 <= K){
      cc = 0;
      ee = dm(i+1,j);
      hs.exist({ss,ee}, cc);
      arrInsert(mm, mm, a, ss, b, ee, c, cc);
    }
    if(j+1 <= K){
      cc = 0;
      ee = dm(i,j+1);
      hs.exist({ss,ee}, cc);
      arrInsert(mm, mm, a, ss, b, ee, c, cc);
    }
  }
  g.setEdge(node, mm, a, b, c);
  wt(N - g.getDistT<int>(st,ed));
}

Current time: 2024年05月19日00時00分22秒
Last modified: 2022年01月16日03時43分33秒 (by laycrs)
Tags: Competitive_Programming_Incomplete Codeforces CF766 CF_DIV2_F
トップページに戻る

Logged in as: unknown user (not login)

ログイン: