题目描述

刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录:
! x   表示用户x发了一条微博;
+ x y 表示用户x和用户y成为了好友
- x y 表示用户x和用户y解除了好友关系
当一个用户发微博的时候,所有他的好友(直接关系)都会看到他的消息。
假设最开始所有人之间都不是好友关系,记录也都是合法的(即+ x y时x和y一定不是好友,而- x y时x和y一定是好友)。
问这m条记录发生之后,每个用户分别看到了多少条消息。

输入

第1行2个整数n,m。
接下来m行,按时间顺序读入m条记录,每条记录的格式如题目所述,用空格隔开。

输出

输出一行n个用空格隔开的数(行末无空格),第i个数表示用户i最后看到了几条消息。

样例输入

2 8
! 1
! 2
+ 1 2
! 1
! 2
- 1 2
! 1
! 2

样例输出

1 1


题解

STL-set

考虑将一段时间内的数量转化为前缀相减的形式,即:解除关系时的总数量-建立关系时的总数量。对于每个人记录当前发的数目,然后这道题就做完了。。。

由于最后要相当于把所有关系解除,因此使用set维护建立的关系即可。

时间复杂度$O(n\log n)$

#include <set>
#include <cstdio>
#include <utility>
using namespace std;
typedef pair<int , int> pr;
set<pr> s;int cnt[200010] , ans[200010];
char str[5];
int main()
{int n , m , i , x , y;pr tmp;scanf("%d%d" , &n , &m);while(m -- ){scanf("%s%d" , str , &x);if(str[0] == '!') cnt[x] ++ ;else if(str[0] == '+') scanf("%d" , &y) , ans[x] -= cnt[y] , ans[y] -= cnt[x] , s.insert(pr(min(x , y) , max(x , y)));else scanf("%d" , &y) , ans[x] += cnt[y] , ans[y] += cnt[x] , s.erase(pr(min(x , y) , max(x , y)));}while(!s.empty()) tmp = *s.begin() , ans[tmp.first] += cnt[tmp.second] , ans[tmp.second] += cnt[tmp.first] , s.erase(tmp);for(i = 1 ; i < n ; i ++ ) printf("%d " , ans[i]);printf("%d\n" , ans[n]);return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/7598616.html

【bzoj4419】[Shoi2013]发微博 STL-set相关推荐

  1. bzoj4419 [Shoi2013]发微博 差分

    这种题一般都是差分,而且只用推一层, 所以对于加边和删边就直接差分消除影响即可 注意统计答案的时候还在的边也要统计,相当于做删除处理,扫一遍加边删边即可判断,注意在vector里可能出现多次,只统计一 ...

  2. luogu P3998 [SHOI2013]发微博

    题目描述 刚开通的 SH 微博共有n个用户(1Ln标号),在这短短一个月的时间内, 用户们活动频繁,共有m 条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x和用户y成为了 ...

  3. [SHOI2013] 发微博

    题目描述: 雾. 题目分析: 刚开始没看到直接关系,XJB YY 其实只需要离线倒着搞就好了 题目链接: BZOJ 4419 Luogu 3998 Ac 代码: #include <cstdio ...

  4. 微博polg什么意思_贾磊:广东发微博给CBA造成了负面影响 方硕的意思可能没表达清楚...

    直播吧11月5日讯 近日做客一档节目时,著名篮球记者贾磊谈到了前天晚上的京粤大战. 贾磊谈到了王骁辉伸腿绊倒威姆斯一事:"我觉得这场比赛,王骁辉的这个动作,大家都看的非常清楚,确实是一个犯规 ...

  5. selenium操作cookies实现免密登录,自动发微博

    一直想用selenium实现个小功能,比如发微博之类的,但是有的网站在登录会有验证码,没想到太好的方法解决,于是想到利用cookies来登录网站 第一步:获取一个可用的cookies,获取的cooki ...

  6. iOS微博项目(七)发微博和定位

    class a导入class b,class b导入class a 会出现错误 如果keyboard不显示,应该是hardware->connect选择了 1. 发微博UI 2.定位 一直不回调 ...

  7. 实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注、取关、发微博、获取用户微博列表

    const assert = require('assert'); const question = '实现一个简易版的微博,包含 client 和 server 两部分,并实现四个基础功能:关注.取 ...

  8. 俞渝发内部信:呼吁员工发微博、发朋友圈保卫当当

    昨日晚间,俞渝发布了一封全员内部信,她在信中表示,李国庆今天清晨六点多钟,带30人来到办公室,将几个保安堵住,进入办公区,用电钻撬开保险柜,抢走了营业执照和U盾,保安受伤. 俞渝呼吁当当童鞋们&quo ...

  9. 维权靠微博?用户京东金融账户被盗刷15万 处理未果怒发微博曝光

    10月25日,今天上午一位微博名为"唐幂_saucerman"的京东金融用户发微博称,其名下账户被盗刷15万元,与京东金融方面处理未果. 文中称,其9月银行卡通过京东金融被盗刷15 ...

  10. 为app添加发微博功能

    2019独角兽企业重金招聘Python工程师标准>>> 如果说要做发微博功能,第一反应就是去下载新浪的sdk,但是sdk太大了,没有针对性,他面对的是所有开发者,个人感觉如果你想做一 ...

最新文章

  1. ADSL自动更换IP地址源代码
  2. 黄聪:DEDECMS织梦系统共如何添加自定义属性和修改方法
  3. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - A. 奖券数目
  4. 学习韩立刚老师IT运维课程,成为韩立刚老师正式学生,在全国范围为你就近推荐工作。...
  5. 明明的随机数(快排)
  6. 数据库基础知识——DML语言
  7. libiconv库简单裁剪支持CP437编码
  8. CV与物理模型的结合,正在改变传统天气预报
  9. 第10课:Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
  10. 利用 mount 指令解决 Read-only file system的问题
  11. M.2接口 通道SATA,PCI-Ex2,PCI-Ex4,B key,M key,BM key,NVMe,AHCI都是什么
  12. java统计代码行数
  13. 百度云盘资源下载器分享【只要有分享地址+提取码】
  14. IT桌面运维常识系列 -(Windows部署服务 - 01)
  15. oracle 创建新的表空间,oracle创建表空间新建新用户并受权
  16. 计算机专业英语读书笔记,英语的读书笔记(精选10篇)
  17. Java课程设计——计算平面图形面积周长、立体图形体积
  18. 【树莓派C语言开发】实验02:RGB小灯
  19. PDF编辑/PDF浏览/PDF打印:PDFPrinting.NET Crack
  20. Nginx配置Https秘钥

热门文章

  1. antd中分页器如何自定义_react+antd分页 实现分页及页面刷新时回到刷新前的page...
  2. Java 的体系结构包含_第一章 java体系结构介绍
  3. java ftp 重命名文件_FTP服务器文件重命名
  4. winform 显示分隔控件_WinForm使用Label控件模拟分割线(竖向)
  5. endnotex7怎么导入中文文献,EndNote 7.0使用中文详细教程
  6. mybatis缓存查找顺序
  7. SpringMVC的RESTful(一)
  8. Struts2之访问ServletAPI
  9. [渝粤教育] 中国地质大学 工程地质 复习题 (2)
  10. 【渝粤题库】国家开放大学2021春2605经济法律基础题目