【食物链】

news2024/9/25 5:21:05

题目

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 5e4+10;
int n, k;
int p[N], d[N];
int find(int x)
{
    if(p[x] != x)
    {
        int root = find(p[x]);
        d[x] += d[p[x]];
        p[x] = root;
    }
    
    return p[x];
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> n;
    for(int i = 1; i <= n; i++) p[i] = i;
    
    int res = 0;
    cin >> k;
    while(k--)
    {
        int t, a, b;
        cin >> t >> a >> b;
        
        if(a > n || b > n)
        {
            res++;
            continue;
        }
        int pa = find(a), pb = find(b);
        if(t == 1)
        {
            if(pa == pb && (d[a] - d[b]) % 3) res++;
            else if(pa != pb)
            {
                p[pa] = pb;
                d[pa] = d[b] - d[a];
            }
        }
        else
        {
            if(pa == pb && (d[a] - d[b] - 1) % 3) res++;
            else if(pa != pb)
            {
                p[pa] = pb;
                d[pa] = d[b] - d[a] + 1;
            }
        }
    }
    
    cout << res;
    
    return 0;
}

注意

1.边界判断别漏

2.涉及到distance的问题,pa == pb且不矛盾的情况不能简单归类为else,不然d[pa]会发生实际变化

思考

关于存储

策略为通过相对距离存储关系

对于a, b

d[a] = d[b]

对应d[pa] = d[b] - d[a];

首先pa和b距离pb同一长度,然后减小pa与a的间距d[a],导致a与b同一权重(别管pa,pa肯定离pb更近了)

同理

对于a, b

d[a] = d[b] + 1

对应d[pa] = d[b] - d[a] + 1

一句话:最主要是在相对距离的玩法下,增加pa距离父节点的距离,就等于增加a距离根节点的距离。

关于使用

pa与pb不相等,说明a, b关系此前不存在(即便间接a, x    x,y也没有)

因此将pa树纳入pb下,并对于a, b进行距离调整

最后可预见的是一片关系森林,每个size > 1树上的元素a, b都有一个基本的性质(pa == pb)

size = 1的树肯定找不到pa == pb的情况,由此区分有旧关系,和新关系。

举例判定2类型矛盾的代码

在有旧关系的基础上,不满足(d[a] - d[b] - 1) % 3的情况(之前有关系,和现在的不矛盾)只有当d[a] - d[b]的差模3余1(代表a吃b)。

也即考虑加粗部分在不矛盾的情况下模3余0即可得到代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RaiDrive / Cyberduck 的安装破解

安装完成后&#xff0c;使用方法可以去这里看&#xff1a; Synology DS920 【外网访问】 这篇文章主要是为了解决 RaiDrive 的登录付费和 Cyberduck 的语言 所以可以尽管下载&#xff0c;盘中 RaiDrive 的免登录免费和 Cyberduck 的中文语言是没有问题的 硬盘映射程序 提…

专题 | IAM业界热度不减,2024市场持续井喷(一)

面对无边界、无规则、无差别&#xff08;企业规模&#xff09;的攻防时代&#xff0c;身份安全在网络安全的重要性日益增强。 身份安全是Gartner最近几年来频繁提及的重要未来趋势之一。RSAC 2023上RSA CEO Rohit Ghai 甚至发表了主题为《迫在眉睫的身份危机&#xff09;》的开…

DAMA学习笔记(十二)-数据质量

1.引言 数据管理能力包括为各类应用设计数据模型、安全存储和访问数据、适当地共享数据、从数据中获得知识&#xff0c;以及保障满足业务需求的能力等。但实现数据价值的前提是数据本身是可靠和可信的&#xff0c;换句话说&#xff0c;数据应是高质量的。 导致低质量数据产生的…

聚焦光热型太阳光模拟器助力多晶硅均匀加热

晶圆均匀加热技术综述 晶圆均匀加热是半导体制造过程中的关键技术之一&#xff0c;直接影响着晶圆上各种加工工艺的质量和稳定性。晶圆加热的目的在于化学气相沉积、退火、氧化等工艺中&#xff0c;通过对晶圆进行必要的热处理&#xff0c;以促进或优化后续工艺步骤。不均匀的…

嵌入式软件--C语言项目 客户信息管理系统

考虑到目前C语言的学习是以为嵌入式做基础而进行的&#xff0c;项目所使用到的语法和结构都是嵌入式常用到的&#xff0c;这是较为特殊和针对性的项目&#xff0c;不与其他同名项目作比较。若有参考着谨慎借鉴。 实现一个客户信息管理系统&#xff0c;功能包括添加客户、修改客…

CTFHUB-web-RCE-远程包含

开启题目 点击下面的 phpinfo 跳转之后发现查看到了 PHP版本&#xff0c;根据源码可以感觉到这里有文件包含&#xff0c;查看之后发现 allow 的配置都开着 抓包之后把 GET 换成 POST&#xff0c;构造 payload 发包&#xff0c;发现根目录有一个 flag 文件 <?php system(ls…

关于FOC学习资料的整理

【自制FOC驱动器】深入浅出讲解FOC控制与SVPWM技术 (qq.com)https://mp.weixin.qq.com/s?__bizMzk0NDQxMTY5OA&mid2247493780&idx1&sn53eacd4fd7e452489fc612bcb2b46a75&source41#wechat_redirect 稚晖君写的文章&#xff0c;涉及面很全&#xff0c;很通俗易…

【机器学习】ImageNet的基本概念以及如何使用ImageNet数据集

引言 ImageNet是一个大型的图像数据库&#xff0c;它根据WordNet的层级结构&#xff08;目前仅限于名词&#xff09;组织&#xff0c;其中每个层级节点都由成百上千张图像来描绘。这个项目对计算机视觉和深度学习研究的发展起到了重要作用 文章目录 引言一、ImageNet的基本概念…

ppt转pdf需要怎么转?6个软件教你快速进行文件格式转换

ppt转pdf需要怎么转&#xff1f;6个软件教你快速进行文件格式转换 将PPT转换为PDF格式是许多办公人员和学生常见的需求&#xff0c;尤其是在分享和发布文档时。以下是六款方便且高效的PPT转PDF软件&#xff0c;帮助你快速进行文件格式转换。 迅捷PDF转换器 这是专业的PDF编辑…

Gartner发布CNAPP云原生应用保护平台市场指南:CNAPP应该具有的4项强制功能和14项通用功能

CNAPP 满足了云原生应用程序和基础设施从开发到生产的全生命周期保护需求。负责云安全策略的安全和风险管理领导者应利用这项研究来分析和评估新兴的 CNAPP 产品。 主要发现 云原生应用和基础设施的攻击面不断扩大&#xff0c;攻击者将攻击重点放在运行时环境&#xff0c;包括网…

Java面试题--JVM大厂篇之全面掌握Parallel GC参数配置:实战指南

目录 引言&#xff1a; 正文&#xff1a; 一、Parallel GC概述 二、Java工程师的痛点 三、Parallel GC参数配置详解 1. 基本参数 2. 新生代参数 3. 老年代参数 4. 调优参数 四、实战案例 案例一&#xff1a;电商网站高并发场景 案例二&#xff1a;金融系统低延迟要…

python 文件打开、读、关闭练习

一、题目要求 二、代码实现 f open("D:\\workspace\\word.txt" , "r", encoding "UTF-8")# 方案一 # content f.read() # count content.count("itheima") # print(f"itmeiha在文件中出现了&#xff1a;{count}次")# 方案…

AI智能助手商业系统软件源码(IMYAI智能助手) AI换脸/智能体GPTs应用/AI视频生成/AI绘画/文档分析/GPT-4o模型支持

人工智能技术的发展日新月异&#xff0c;从深度学习到自然语言处理&#xff0c;再到计算机视觉等领域&#xff0c;不断推动着各行各业的变革。在应用层面&#xff0c;人工智能已深入到内容创作领域&#xff0c;为创作者提供了前所未有的便利和可能性。这些技术的发展潜力巨大&a…

iFC 原理与使用 VoNR 中的 T-ADS

目录 1. iFC 原理与使用 1.01 主要内容 1.02 什么是iFC 1.03 S-CSCF 怎么得到iFC&#xff1f;iFC在哪里定义&#xff1f; 1.04 Cx-User-Data AVP 举例(含iFC) ​编辑 1.05 iFC 具体构成 1.06 iFC 的重要参数&#xff1a;SessionCase 1.07 iFC 实战讲解1&#xff1a;VoN…

【Material-UI】Button 组件中的颜色设置(Color)详解

文章目录 一、基础颜色选项1. Secondary 颜色2. Success 颜色3. Error 颜色 二、定制颜色1. 添加自定义颜色2. 禁用默认颜色 三、高级用法和最佳实践1. 确保对比度2. 语义化颜色3. 考虑用户体验 四、总结 在用户界面设计中&#xff0c;颜色不仅仅是美学的一部分&#xff0c;更是…

【C++ Primer Plus】学习笔记 4

文章目录 前言一、结构类型1.在程序中使用结构2.C11结构初始化3. 结构可以将 string 类作为成员吗4.其他特性5.结构数组 二、共用体三、枚举1.设置枚举量的值2. 枚举的取值范围 前言 该笔记内容为书第四章——复合类型&#xff0c;加油加油 一、结构类型 结构是用户定义的类型…

8.2 生成器函数与表达式:Python 的秘密武器

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; 工&#x1f497;重&#x1f497;hao&#x1f497;&#xff1a;野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题.…

使用jlink高版本调试和烧录立创·地文星CW32F030C8T6开发板

使用jlink高版本调试和烧录立创地文星CW32F030C8T6开发板 CW32F030固件包下载 下载地址&#xff1a;https://www.whxy.com/uploads/files/20240514/CW32F030_StandardPeripheralLib_V2.1.zip 官网资料地址&#xff1a;固件库-武汉芯源半导体官网|专注32位MCU芯片设计 (whxy.…

提升树模型

提升树&#xff08;Boosting Tree&#xff09;是一种集成学习方法&#xff0c;它通过组合多个弱分类器&#xff08;通常是决策树&#xff09;来构建一个强分类器。这种方法在许多统计学习任务中表现出色&#xff0c;被认为是性能最好的方法之一。 提升树模型概述 提升树模型是…

我的世界 java 1.21 版本中 function 命令介绍使用教程

仅限java中的1.21版本 一、函数文件位置二、创建配置和函数文件1.函数名称.mcfunction2.pack.mcmeta【默认文件】 三、加载执行函数1.刷新数据包&#xff0c;重新加载2.查询数据包加载情况3.执行函数 四、特别感谢 特别注意&#xff0c;在1.21版本中function目录名没有s&#x…