Chgtaxihe's blog Chgtaxihe's blog
首页
练习
算法学习
读书笔记
小玩意

Chgtaxihe

首页
练习
算法学习
读书笔记
小玩意
  • 训练补题
  • Codeforces 刷题计划
  • 概率dp练习
  • dp专题练习
  • 数论练习
  • 搜索专题练习
  • 图论练习
  • 基础字符串练习
  • AtCoder练习
  • 题解们
  • solutions

  • 训练补题

    • 训练补题-个人1
    • 训练补题-个人10
    • 训练补题-个人2
    • 训练补题-个人5
    • 训练补题-个人6
    • 训练补题-个人8
    • 训练补题-个人9
    • 训练补题-牛客训练赛1
    • 训练补题-牛客训练赛10
    • 训练补题-牛客训练赛2
    • 训练补题-牛客训练赛3
    • 训练补题-牛客训练赛6
    • 训练补题-牛客训练赛6
    • 训练补题-牛客训练赛7
    • 训练补题-牛客训练赛8
    • 训练补题-牛客训练赛9
    • 训练补题-杭电多校10
    • 训练补题-杭电多校2
    • 训练补题-杭电多校3
    • 训练补题-杭电多校6
    • 训练补题-杭电多校9
    • NWERC 2018-训练补题11
    • SpbKOSHP 19-训练补题12
      • Gym 102396C 暴力 复杂度分析
      • Gym 102396K LCT*
      • Gym 102396J 数学*
    • Gym102576-训练补题13
    • GCPC2018-训练补题14
    • Gym102202-训练补题15

SpbKOSHP 19-训练补题12

  • auto-gen TOC: {:toc}

# 组队排位赛12 SpbKOSHP 19

没找到英文题解(只有俄文题解?)

# Gym 102396C 暴力 复杂度分析

解法:并查集维护连通性,vector<int> frient存朋友关系,当两个连通块合并时,遍历节点数较少的连通块的节点v,遍历u:frient[v],判断答案是否+1即可

时间复杂度O(k+(q+m)log2q)O(k+(q+m)log_2q)O(k+(q+m)log2​q)??

struct union_set{
    const static int max_node = 1e5 + 1000;
    int head[max_node];
    
    int find(int x){return head[x]==x?x:head[x]=find(head[x]);}
    void init(int node_cnt){for(int i=node_cnt; i>=0; i--) head[i] = i;}
    bool merge(int u, int v){
        u = find(u), v = find(v);
        if(u == v) return false;
        if(un[u].size() > un[v].size()) swap(u, v);
        for(int nd:un[u]){
            for(int f:frient[nd]){
                if(v == find(f)) ans[nd]++, ans[f]++;
            }
        }
        for(int nd:un[u]) un[v].push_back(nd);
        un[u].clear();
        head[u] = v;
        return true;
    }
}unset;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# Gym 102396K LCT*

# Gym 102396J 数学*

上次更新: 2021/02/24, 03:37:30
NWERC 2018-训练补题11
Gym102576-训练补题13

← NWERC 2018-训练补题11 Gym102576-训练补题13→

最近更新
01
深入理解Java虚拟机
03-04
02
DNS工作原理
02-27
03
改用VuePress啦
02-23
更多文章>
Theme by Vdoing | Copyright © 2019-2021
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式