2022 RoboCom 世界机器人开发者大赛-本科组(省赛)解题报告 | 珂学家


前言


题解

2022 RoboCom 世界机器人开发者大赛-本科组(省赛)。

感觉T5是最简单的,其他都不好做。


RC-u5 树与二分图

分值: 30分

思路: 容斥原理

树天然就是二分图,按深度d归类(偶数深度为S1,奇数深度为S2),如果新增边,还是二分图,说明

新增边 ( u , v ) , u ∈ S 1 , v ∈ S 2 新增边(u, v), u\in S1, v\in S2 新增边(u,v),u∈S1,v∈S2

只要能梳理出这个性质,那这题就非常的容易。

由容斥得

∣ S 1 ∣ ∗ ∣ S 2 ∣ − ( n − 1 ) |S1| * |S2| - (n - 1) ∣S1∣∗∣S2∣−(n−1)
n 为树的节点, n − 1 为树的边数 n 为树的节点, n-1为树的边数 n为树的节点,n−1为树的边数

S1和S2通过DFS或者bfs层序遍历即可

cpp 复制代码
#include <bits/stdc++.h>

using namespace std;

int color[2] = {0};

void dfs(vector<vector<int>>&g, vector<int>&color, int u, int fa, int c) {
    color[c]++;
    for (int v: g[u]) {
        if (v == fa) continue;
        dfs(g, color, v, u, 1 - c);
    }
}

int main() {
    int n;
    cin >> n;
    vector<vector<int>> g(n);
    vector<int> color(n);
    for (int i = 0; i < n - 1; i++) {
        int u, v;
        cin >> u>> v;
        u--; v--;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(g, color, 0, -1, 0);

    int64_t p = (int64_t)color[0] * color[1];
        
    cout << (p-(n - 1)) << "\n";
    return 0;
}

写在最后

相关推荐
papership2 分钟前
【入门级-数据结构-3、特殊树:完全二叉树的数组表示法】
数据结构·算法·链表
码途漫谈3 分钟前
Easy-Vibe开发篇阅读笔记(四)——前端开发之结合 Agent Skills 美化界面
人工智能·笔记·ai·开源·ai编程
smj2302_796826526 分钟前
解决leetcode第3911题.移除子数组元素后第k小偶数
数据结构·python·算法·leetcode
易连EDI—EasyLink9 分钟前
易连EDI–EasyLink实现OCR智能数据采集
网络·人工智能·安全·汽车·ocr·edi
冬奇Lab21 分钟前
RAG 系列(二):用 LangChain 搭建你的第一个 RAG Pipeline
人工智能·langchain·llm
学习论之费曼学习法35 分钟前
多模态大模型实战:用 GPT-4o API 打造 AI 助手,能看、能听、能说!
人工智能
昨夜见军贴061643 分钟前
IACheck与AI报告审核,开启供应商资质核验报告审核新篇章
人工智能
Beginner x_u1 小时前
链表专题:JS 实现原理与高频算法题总结
javascript·算法·链表
wxy不爱写代码1 小时前
C++多线程
面试·职场和发展
m0_726365831 小时前
Ai漫剧系统 几分钟,让AI 把一篇小说变成了一部漫剧成片:从剧本到视频的全流程系统实现
人工智能·语言模型·ai作画·音视频