P3998 [SHOI2013] 发微博

news/2025/1/24 8:48:02/文章来源:https://www.cnblogs.com/XichenOC/p/18689011

P3998 [SHOI2013] 发微博

题目翻译:

题目描述已经较为详细,这就不翻译了。

思路:

考虑暴力: 我们可以给每个人都添加一个关系链,每发出一次一条消息,就将所有与他有关系的答案依次加一。这样就统计出来了。但是这样的复杂度为 \(O(mn)\) 无法过。

考虑优化: 我们发现 \(m\) 次询问时难以优化掉的。考虑如何把 \(n\) 优化掉。我们发现暴力时每一次都要给所有人加一,那有什么办法可以不用每次都修改了?可以考虑前缀和。我们发现某一段有关系的区间内所加的消息数是等于,它那个人结束时发出的所有消息数,减去刚建立关系时的消息数,那我们只需要维护每个人发出消息数,在有人加入时,和退出时,分别减去和加上即可。

注意: 由于不一定所有人最后都会取消关系,所以我们最后要强制取消所有关系,那我们可以用 \(set\) 维护所有有关系的人,由于 \(set\) 操作都是 \(O(\log n)\) 的,所以最终复杂度为 \(O(m \log n)\)

完整代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
int n,m,cnt[N],ans[N];
set<int>s[N];
set<int>::iterator it;
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=m;++i){char opt;cin>>opt;if(opt=='!'){int x;cin>>x;cnt[x]++;}if(opt=='+'){int x,y;cin>>x>>y;ans[x]-=cnt[y];ans[y]-=cnt[x];s[x].insert(y);s[y].insert(x);}if(opt=='-'){int x,y;cin>>x>>y;ans[x]+=cnt[y];ans[y]+=cnt[x];s[x].erase(y);s[y].erase(x);}}for(int i=1;i<=n;++i){for(it=s[i].begin();it!=s[i].end();++it){ans[i]+=cnt[*it];}}for(int i=1;i<=n;++i)cout<<ans[i]<<" ";return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重拾 SSH:从基础到安全加固

安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,属于应用层协议。OpenSSH 是最流行的 SSH 实现,它是大量操作系统的默认组件 OpenSSH 套件由以下工具组成:远程操作使用:ssh, scp 和 sftp 密钥管理:ssh-add, ssh-keysign, ssh-keyscan 和 ssh-ke…

史上第一位0:3夺得冠军

以颤抖之身追赶,怀敬畏之心挑战。--《棋魂》

【推荐】一款.NET Core开发的开源免费功能完善的医疗影像PACS系统

项目介绍 今天给大家推荐一款开源(MIT License开源协议)、免费、完善、轻量级的医疗影像PACS系统,基于.NET Core 的 DICOM SCP(Service Class Provider)服务器,提供 DICOM 存储、工作列表、查询检索服务,打印服务,WADO/DicomWeb服务,集成了功能强大的DICOM 桌面和Web查…

C# as 和 is 运算符区别和用法

前言 在C#中,as 和 is 关键字都用于处理类型转换的运算符,但它们有不同的用途和行为。本文我们将详细解释这两个运算符的区别和用法。 is 运算符 is 运算符用于检查对象是否是某个特定类型,或者是否可以转换为该类型。它返回一个布尔值 (true 或 false)。string title = &qu…

2025.1.24

树上背包DESTRUCTION 3,2,109 年论文现在才学也是没救了。 对于重量为 \(1\) 的,直接每次枚举 size 就可以做到 \(n^2\),证明考虑一个点对只会在 lca 出有一个贡献。 考虑重量是 \(v_i\),定义 \(v_i\) 的上界是 \(V\)。 暴力做是 \(nV^2\) 的,实在是不优美。 考虑更改更新顺…

读量子霸权13逆转衰老

热力学定律解释衰老,开放系统或可逆转。量子计算机或助解决衰老,实现生物与数字永生。热量限制、DNA修复、细胞重编程等或延长寿命,但需防副作用。1. 热力学第二定律 1.1. 热力学三大定律1.1.1. 第一定律简单地指出,物质和能量的总量是一个常数,能量不会从无到有,总是守恒…

更改暗盒DX码-DIY胶卷DX码

更改暗盒DX码-DIY胶卷DX码我们平时用纯机械相机可能更多一些,纯机械相机多数也不具备读取DX码这些信息的功能。有些傻瓜相机或自动相机需要读取这些信息,如果不能正确识别,有时候我们使用分装卷,暗盒都是二次利用的,因此DX码也是不正确的,机器读取出来就会造成曝光错误。…

SEKONIC L-206点测光表使用教程

本文记录SEKONIC L-206点测光表的使用方法。 先来一些测光表的美照。(咸鱼找的图,这里感谢前辈们)电池长这样(1.35V汞电池,现已停产,替代方案可以看之前的文章)视窗,这里是有一半蓝色膜,按测光按钮会弹开使用教程:看上图,1的位置是目视窗口,也是转盘,2是测光按钮,…

Fix: The Mapped Network Drive Could Not Be Created in Windows

https://www.minitool.com/backup-tips/the-mapped-network-drive-could-not-be-created.htmlEdit the Group Policy To fix “The mapped network drive could not be created”, you need to change some settings in Group Policy. Step 1: Open the Run dialog box by pres…

一个DIY测光表的使用说明

近期比较沉迷测光表,除收了几个老式机械测光表之外,还收了一个DIY的迷你测光表。(本文不营销,主要是给自己记录使用说明书) (因懒得拍照,直接偷卖家前辈的图了)还有专门为徕卡设计的热靴说明书

PowerShell命令用于管理TPM(受信平台模块)的功能分类及命令示例表格。此表格包含了TPM相关的常见管理任务和相应的命令,帮助您高效地使用 PowerShell 管理TPM。

PowerShell命令用于管理TPM(受信平台模块)的功能分类及命令示例表格。此表格包含了TPM相关的常见管理任务和相应的命令,帮助您高效地使用 PowerShell 管理TPM。功能分类 命令 说明 示例启用TPM Enable-TpmAutoProvisioning 启用TPM自动配置 Enable-TpmAutoProvisioning 启用…