首页 > 其他 > 详细

[BZOJ4419][SHOI2013]发微博

时间:2018-11-10 21:44:30      阅读:156      评论:0      收藏:0      [点我收藏+]

考虑要让复杂度和操作数同阶,每次删除时统计下与对方成为好友的时刻到现在对方一共发了多少条微博即可,set维护,最后将所有仍为好友的全部处理掉。

考虑不用set,操作倒序即可,类似差分思想。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++)
 6 typedef long long ll;
 7 using namespace std;
 8 
 9 const int N=500010;
10 char ch;
11 int n,m,ans[N],num[N];
12 struct P{ int op,x,y; }a[N];
13 
14 int main(){
15     freopen("bzoj4419.in","r",stdin);
16     freopen("bzoj4419.out","w",stdout);
17     scanf("%d%d",&n,&m);
18     rep(i,1,m){
19         scanf(" %c",&ch); scanf("%d",&a[i].x);
20         if (ch==!) a[i].op=1;
21         else{
22             if (ch==+) a[i].op=2; else a[i].op=3;
23             scanf("%d",&a[i].y);
24         }
25     }
26     for (int i=m; i; i--){
27         if (a[i].op==1) num[a[i].x]++;
28         if (a[i].op==2) ans[a[i].x]+=num[a[i].y],ans[a[i].y]+=num[a[i].x];
29         if (a[i].op==3) ans[a[i].x]-=num[a[i].y],ans[a[i].y]-=num[a[i].x];
30     }
31     rep(i,1,n) printf("%d ",ans[i]);
32     return 0;
33 }

 

[BZOJ4419][SHOI2013]发微博

原文:https://www.cnblogs.com/HocRiser/p/9940698.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!