#倒推#洛谷 3998 [SHOI2013]发微博
分析
考虑\(x\)看到\(y\)的消息条数等于互删时\(y\)发的消息条数减去互加时\(y\)发的消息条数
为了让最后\(x\)和\(y\)不再为好友,那可以将操作反过来,因为一开始他们一定不是好友,
所以记录某人发的消息条数\(cnt\),倒序维护发微博,
加好友(\(ans_x+=cnt_y,ans_y+=cnt_x\)),
删好友(\(ans_x-=cnt_y,ans_y-=cnt_x\))即可
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
const int N=500011;
int opt[N],X[N],Y[N],ans[N>>1],cnt[N>>1],n,m;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
signed main(){
n=iut(); m=iut();
for (rr int i=1;i<=m;++i){
rr char c=getchar();
while (c!='!'&&c!='+'&&c!='-') c=getchar();
opt[i]=(c=='!')+(c=='+')*2+(c=='-')*3,X[i]=iut();
if (opt[i]>1) Y[i]=iut();
}
for (rr int i=m;i;--i){
if (opt[i]==1) ++cnt[X[i]];
else if (opt[i]==2) ans[X[i]]+=cnt[Y[i]],ans[Y[i]]+=cnt[X[i]];
else ans[X[i]]-=cnt[Y[i]],ans[Y[i]]-=cnt[X[i]];
}
for (rr int i=1;i<=n;++i) print(ans[i]),putchar(32);
return 0;
}
#倒推#洛谷 3998 [SHOI2013]发微博的更多相关文章
- 洛谷 P3998 [SHOI2013]发微博
洛谷 P3998 [SHOI2013]发微博 洛谷传送门 题目描述 刚开通的 SH 微博共有n个用户(1Ln标号),在这短短一个月的时间内, 用户们活动频繁,共有m 条按时间顺序的记录: ! x 表示 ...
- luogu 3998 [SHOI2013]发微博 map
考试的时候被卡常了~ code: #include <bits/stdc++.h> #define ll long long #define N 200002 #define setIO( ...
- 【BZOJ4419】[SHOI2013]发微博(???)
[BZOJ4419][SHOI2013]发微博(???) 题面 BZOJ 洛谷 题解 一道\(easy\),每个点维护一下要给周围的点加上多上,如果额外连了一个点进来就给他把标记减掉,如果删掉了一条边 ...
- [BZOJ 4419][Shoi2013]发微博
4419: [Shoi2013]发微博 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 665 Solved: 364[Submit][Status] ...
- BZOJ 4419: [Shoi2013]发微博 set模拟
4419: [Shoi2013]发微博 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4419 Description 刚开通的SH微博共 ...
- P3998 [SHOI2013]发微博 方法记录
原题链接 [SHOI2013]发微博 题目描述 刚开通的 SH 微博共有 \(n\) 个用户(\(1\sim n\) 标号),在这短短一个月的时间内,用户们活动频繁,共有 \(m\) 条按时间顺序的记 ...
- BZOJ4419: [Shoi2013]发微博 暴力
Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x和用 ...
- bzoj4419[SHOI2013]发微博
题意:给你一个初始没有边,点权均为0的无向图,三种操作:加边,删边,选择一个点将当前与之相邻的点(不包括自身)的点权+1,询问最后所有点的点权. 据说正解是set维护每个人的朋友,然后考虑每次加边.删 ...
- BZOJ4419:[SHOI2013]发微博(乱搞)
Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x和用 ...
- [SHOI2013]发微博
Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x ...
随机推荐
- 使用3-hexo主题时无法正常渲染html代码
问题描述 在hexo框架中使用3-hexo主题时,会遇到这样一个问题:在markdown中嵌入html代码,这些嵌入的html代码无法正常显示. 原因分析 在使用3-hexo主题时,默认使用主题自带的 ...
- MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 2
描述: 2021-08-xx 13:31:30.049 DEBUG 9208 : ==> Preparing: SELECT SUM(end_vt) - SUM(start_vt) FROM s ...
- ubuntu 中 docker 每次都输入 sudo 命令
查看用户组及成员 sudo cat /etc/group | grep docker 可以添加docker组 sudo groupadd docker 添加用户到docker组 sudo gpassw ...
- MAUI调用.so库
必要条件: (一)安装JDK (二)安装NDK (三)安装Android Studio(其实可以不用装也行) 使用Android Studio构件.so包 构件.so包 1. 使用Android st ...
- FeignClient 报错: A bean with that name has already been defined and overriding is disabled.
1. 错误信息 *************************** APPLICATION FAILED TO START *************************** Descript ...
- C++ //常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素
//常用拷贝和替换算法 //copy //replace 将指定区间范围内的旧元素修改为新元素 //replace_if(满足条件的元素,替换指定的元素) //swap 互换两个容器的元素 #incl ...
- 从零开始写 Docker(五)---基于 overlayfs 实现写操作隔离
本文为从零开始写 Docker 系列第五篇,在 pivotRoot 基础上通过 overlayfs 实现写操作隔离,达到容器中写操作和宿主机互不影响. 完整代码见:https://github.com ...
- stm32 中断处理函数注意事项
一 前记 最近在公司的一个项目中碰到一个解决了定位很久的 bug , bug 找到的时候发现犯了很低级的错误--在中断处理函数中调用了 printf 函数,因为中断处理函数的调用了不可重入函数,导致接 ...
- 可穿戴智能手环解决方案之BLE的ADV广播协议解读
一 概念 直接上英文原文,怕自己的翻译误导大家. When a BLE device is advertising, it periodically transmits packets, which ...
- JavaFx实现倒计时按钮组件(类似发送激活码)
原文地址: JavaFx实现倒计时按钮组件(类似发送激活码) - Stars-One的杂货小窝 本文基于TornadoFx框架进行编写,封装工具代码是kotlin版本 然后也是顺便把这个封装成了sta ...