Codeforces Round #766 DIV2 F問題 (2750pt)
Problem description
省略
省略
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)