当前位置: 首页 > news >正文

码题杯:我会修改图

原题链接:码题集OJ-我会修改图​​​​​​

题目大意:给你一张n个点(编号为1∼n),m条边(编号为1∼m)的无向图,图上每个点都有一个点权,权值分别为a1​,a2​,…,an​,你需要支持以下询问或操作,总共有q次。

1 x把编号为x(1≤x≤m)的边删除。

2 x y询问从点x(1≤x≤n)出发,能够到达多少个不同的点t(t!=x),满足ax​+at​=y。

思路:因为操作二需要找到与当前点连接的符合条件的点,所以可以很自然的想到并查集,但是操作一会导致并查集的图断开,并且并查集这个算法不能很好的分离出点。正难则反,如果记录每一个操作,并且倒序的进行,对于操作二,查询并不会出错,对于操作一,并查集可以很好的将二个不连通的图联通。但是仍然会超时,因为数据很大,所以需要加快操作二查询有效点的速度,可以开一个map数组,代表以某个点为根的并查集中的数的总数。

//冷静,冷静,冷静
//调不出来就重构
#pragma GCC optimize(2)
#pragma GCC optimize("O3")
#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> pii;
const int N=4e5+10,mod=1000000007;
ll fa[N];//并查集的数组
ll p[N];//每个点的权值
pii op[N];//建立的边
bool st[N];//删除的边
struct node
{ll cz;//操作的类型,是删除边还是求符合条件的点 ll a;//如果是删除边,这个就是边的序号,如果是求点,这就是点的编号 ll b;//先加得到得值 
}kp[N];
map<ll,ll> cnt[N];//例如cnt[2],就是以2为首得并查集里面所有数得集合,cnt[2][1]就是以2为首的并查集中1的个数
ll find(ll x)
{if(x==fa[x])return x;return fa[x]=find(fa[x]);
}
void hb(pii v)
{ll x=v.first,y=v.second;x=find(x);y=find(y);if(x==y)return;if(cnt[x].size()>cnt[y].size())swap(x,y);fa[x]=y;for(auto vb:cnt[x])//因为合并了,那么就要将二个并查集中的数字数量也合并,对于这种情况,将小的并查集合并到大的并查集中 {cnt[y][vb.first]+=vb.second;}
}
int main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);ll n,m,q;cin>>n>>m>>q;for(int i=1;i<=n;i++){cin>>p[i];fa[i]=i;cnt[i][p[i]]++;}for(int i=1;i<=m;i++){cin>>op[i].first>>op[i].second;}for(int i=1;i<=q;i++){cin>>kp[i].cz;if(kp[i].cz==1){cin>>kp[i].a;st[kp[i].a]=1; }else{cin>>kp[i].a>>kp[i].b;}}for(int i=1;i<=m;i++)//建立最终的并查集{if(st[i])continue;hb(op[i]);}vector<ll> ans;for(int i=q;i;i--){if(kp[i].cz==1)//相反的操作,最终合成出最初的并查集 {ll v=kp[i].a;hb(op[v]);}else{ll x=kp[i].a,y=kp[i].b;ll v=p[x];x=find(x);ans.push_back(cnt[x][y-v]-(y-v==v));//题目要求不能和自己 }}for(int i=ans.size()-1;i>=0;i--)cout<<ans[i]<<endl; return 0;
}

相关文章:

码题杯:我会修改图

原题链接&#xff1a;码题集OJ-我会修改图​​​​​​ 题目大意&#xff1a;给你一张n个点&#xff08;编号为1∼n&#xff09;&#xff0c;m条边&#xff08;编号为1∼m&#xff09;的无向图&#xff0c;图上每个点都有一个点权&#xff0c;权值分别为a1​,a2​,…,an​&…...

MongoDB Map-Reduce 简介

MongoDB Map-Reduce 简介 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;它使用文档存储数据&#xff0c;这些数据以 JSON 格式存储。MongoDB 提供了多种数据处理方法&#xff0c;其中 Map-Reduce 是一种用于批量处理和聚合数据的功能强大的工具。Map-Reduce 允许用户对大量数…...

某平台小程序逆向思路整理

一、下载软件 devtools 二、强制打开控制台 根据返回的数据我们得知数据被加密了 找到这个加密的js 发现加密的位置 打断点进入这个加密的方法 之后自定义js。python调用解密即可。...

黑马苍穹外卖6 清理redis缓存+Spring Cache+购物车的增删改查

缓存菜品 后端服务都去查询数据库&#xff0c;对数据库访问压力增大。 解决方式&#xff1a;使用redis来缓存菜品&#xff0c;用内存比磁盘性能更高。 key :dish_分类id String key “dish_” categoryId; RestController("userDishController") RequestMapping…...

鸿蒙开发系统基础能力:【@ohos.systemTime (设置系统时间)】

设置系统时间 本模块用来设置、获取当前系统时间&#xff0c;设置、获取当前系统日期和设置、获取当前系统时区。 说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import systemTime …...

CVE-2020-26048(文件上传+SQL注入)

简介 CuppaCMS是一套内容管理系统&#xff08;CMS&#xff09;。 CuppaCMS 2019-11-12之前版本存在安全漏洞&#xff0c;攻击者可利用该漏洞在图像扩展内上传恶意文件&#xff0c;通过使用文件管理器提供的重命名函数的自定义请求&#xff0c;可以将图像扩展修改为PHP&#xf…...

【面试题】信息系统安全运维要做什么

信息系统安全运维是确保信息系统稳定、可靠、安全运行的一系列活动和措施。 其主要包括以下几个方面&#xff1a; 1.系统监控&#xff1a; 实时监测信息系统的运行状态&#xff0c;如服务器的性能指标、网络流量、应用程序的运行情况等。通过监控工具&#xff0c;及时发现系统…...

引导过程与服务器控制

一、引导过程 1.开机自检 服务器主机开机以后&#xff0c;将根据主板 BIOS 中的设置对 CPU&#xff08;Central Processing Unit&#xff0c; 中央处理器&#xff09;、内存、显卡、键盘等设备进行初步检测&#xff0c;检测成功后根据预设的启动顺序移 交系统控制权&#xff0c…...

前置章节-熟悉Python、Numpy、SciPy和matplotlib

目录 一、编程环境-使用jupyter notebook 1.下载homebrew包管理工具 2.安装Python环境 3.安装jupyter 4.下载Anaconda使用conda 5.使用conda设置虚拟环境 二、学习Python基础 1.快排的Python实现 (1)列表推导-一种创建列表的简洁方式 (2)列表相加 2.基本数据类型及运…...

在Ubuntu上安装和配置配置服务器防火墙(CSF)的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Config Server Firewall&#xff08;CSF&#xff09;是大多数 Linux 发行版和基于 Linux 的 VPS 的免费高级防火墙。除了基本的防…...

Python-井字棋

井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…...

39.客户端与服务端断开事件handler

客户端与服务端断开有两种情况&#xff1a; 1.正常断开&#xff0c;客户端调用了ctx.channel().close(); 2.异常断开&#xff0c;比如客户端挂掉了 服务端定义handler来处理连接断开情况下要进行的逻辑操作&#xff1a; package com.xkj.server.handler;import com.xkj.ser…...

SSL 之 http只用crt格式证书完成SSL单向认证通信

背景 远程调用第三方服务时&#xff0c;之前都是双向认证&#xff0c;服务器提供jks格式的keystore证书&#xff0c;客户端配置好即可。 今天遇到个奇葩需求&#xff0c;服务器只给根公钥证书(root.crt)&#xff0c;还是第三方合法证书&#xff0c;要求单向认证&#xff0c;客户…...

实训作业-人事资源管理系统

er图 模型图 DDL与DML DROP TABLE IF EXISTS departments; CREATE TABLE departments (department_id int(11) NOT NULL AUTO_INCREMENT COMMENT 部门ID,department_name varchar(100) NOT NULL COMMENT 部门名称,PRIMARY KEY (department_id),UNIQUE KEY department_name (de…...

Flink 资源静态调度

本内容是根据 Flink 1.18.0-Scala_2.12 版本源码梳理而来。本文主要讲述任务提交时&#xff0c;为 Task 分配资源的过程。 以下是具体步骤讲解&#xff1a; TaskManager 资源注册 TaskManager 在启动时&#xff0c;会向 ResourceManager 注册资源。ResourceManager 会将 Tas…...

upload-labs第十三关教程

upload-labs第十三关教程 第十三关一、源代码分析代码审计 二、绕过分析1&#xff09;0x00绕过a.上传eval.pngb.使用burpsuite进行拦截修改之前&#xff1a;修改之后&#xff1a;进入hex模块&#xff1a; c.放包上传成功&#xff1a; d.使用中国蚁剑进行连接 2&#xff09;%00绕…...

基于springboot实现宠物商城网站管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现宠物商城网站管理系统演示 摘要 传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;商品信息因为其管理内容繁杂&#xff…...

Fragment与ViewModel(MVVM架构)

简介 在Android应用开发中&#xff0c;Fragment和ViewModel是两个非常重要的概念&#xff0c;它们分别属于架构组件库的一部分&#xff0c;旨在帮助开发者构建更加模块化、健壮且易维护的应用。 Fragment Fragment是Android系统提供的一种可重用的UI组件&#xff0c;它能够作为…...

Linux开发讲课16--- 【内存管理】页表映射基础知识2

ARM32页表和Linux页表那些奇葩的地方 ARM32硬件页表中PGD页目录项PGD是从20位开始的&#xff0c;但是为何头文件定义是从21位开始&#xff1f; 历史原因&#xff1a;Linux最初是基于x86的体系结构设计的&#xff0c;因此Linux内核很多的头文件的定义都是基于x86的&#xff0c…...

uniapp地图点击获取位置

主页面 <view class"right-content" click.stop"kilometer(item)"><view class"km">{{item.distance||0}}km</view><image src"../../static/map.png" mode""style"width: 32rpx; height: 32rpx…...

Rust微信SDK实战:构建高性能、类型安全的微信机器人

1. 项目概述与核心价值 最近在折腾一些需要与微信生态深度交互的自动化项目&#xff0c;比如自动回复、消息监控、群管理工具等。这类需求在电商客服、社群运营、企业内部流程自动化等场景下非常普遍。传统的做法往往是基于官方提供的HTTP API&#xff0c;自己封装请求、处理复…...

XOutput 终极指南:让老旧游戏手柄重获新生的完整教程

XOutput 终极指南&#xff1a;让老旧游戏手柄重获新生的完整教程 【免费下载链接】XOutput DirectInput to XInput wrapper 项目地址: https://gitcode.com/gh_mirrors/xo/XOutput XOutput 是一个强大的开源工具&#xff0c;专门解决 Windows 平台上游戏控制器兼容性难题…...

人工智能实操qpfan

一二import cv2 import matplotlib.pyplot as pltimg cv2.imread(./data-aug/cat.png) #img <1> img cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #垂直翻转 #img_flip <2> img_flip cv2.flip(img, 0) #<3> plt.imshow(img_flip) plt.axis(off) plt.show() …...

Python使用Matplotlib绘制基础可视化图表

在Python中进行数据可视化&#xff0c;最常用且功能强大的库是 Matplotlib。它可以帮助你轻松绘制出柱状图、折线图、饼图、散点图、直方图、箱线图、热力图、雷达图等。在开始之前&#xff0c;请确保你已经安装了Matplotlib库。如果没有&#xff0c;可以在终端或命令行中运行以…...

兔子需要通风吗?关键不是风,而是空气路径

养兔子的朋友&#xff0c;大概率都有一个共识&#xff1a;要给兔子控温&#xff0c;夏天防中暑、冬天防受冻。但很多人都忽略了一个和温度同等重要的点——空气流动。 从环境工程的角度来说&#xff0c;兔子的舒适生活环境&#xff0c;离不开三个核心因素&#xff1a;温度、湿度…...

AI Agent 对比和选型

一、前言&#xff01;&#xff01;&#xff01;Agent&#xff0c;把天才 AI 变成一个能干活的人 &#xff01;&#xff01;&#xff01;如果说 LLM 大模型是一个天才引擎&#xff0c;那么 Agent 就是很多无形的手&#xff0c;去控制这个天才引擎完成各种各样的工作和流程&#…...

从锡疫到无铅焊料失效:材料环境可靠性设计实战解析

1. 从拿破仑的纽扣说起&#xff1a;材料失效背后的工程警示在电子工程领域&#xff0c;我们每天都在与材料打交道。从PCB上的焊点&#xff0c;到芯片内部的金属互连&#xff0c;再到外壳的塑料&#xff0c;材料的可靠性直接决定了产品的成败。几年前&#xff0c;当整个行业因Ro…...

MediaCreationTool.bat:Windows部署自动化脚本封装架构深度解析

MediaCreationTool.bat&#xff1a;Windows部署自动化脚本封装架构深度解析 【免费下载链接】MediaCreationTool.bat Universal MCT wrapper script for all Windows 10/11 versions from 1507 to 21H2! 项目地址: https://gitcode.com/gh_mirrors/me/MediaCreationTool.bat …...

ARM微服务器与异构计算:从欧洲实验室到现代数据中心的演进

1. 项目概述&#xff1a;欧洲实验室里的微服务器“新酿”最近在整理资料时&#xff0c;翻到一篇2014年EE Times的老报道&#xff0c;讲的是当时欧洲几个由欧盟资助的微服务器项目。虽然时间过去快十年了&#xff0c;但里面探讨的一些架构思路和设计哲学&#xff0c;在今天看来依…...

簧片继电器可靠性设计与关键技术解析

1. Reed Relay可靠性设计的关键技术解析簧片继电器&#xff08;Reed Relay&#xff09;作为电子系统中的关键切换元件&#xff0c;其可靠性直接影响整个设备的长期稳定性。与传统电磁继电器相比&#xff0c;簧片继电器具有独特的结构优势和技术特点。本文将深入剖析提升簧片继电…...