
bzoj 3562: [SHOI2014]神奇化合物
发布日期:2021-05-06 23:45:55
浏览次数:20
分类:技术文章
本文共 2375 字,大约阅读时间需要 7 分钟。
大水题来啦!!
就是一个暴力题啊!!! 一开始想到了。。。 但是由于我太弱了,觉得10000*10000会超时,于是就GG了。。 不知道为什么。。我都做了这么多题了。。还不是非常清楚多少复杂度会超时。。看来还是我太弱了啊这题的解法:
离线缩点啊!!! 然后因为询问少,所以有些边是永远在的,吧这些搞着先就好了 时间 O(q∗q+q∗n)code:
#include#include #define swap(x,y) {int tt=x;x=y;y=tt;}const int N=5005;const int Q=10005;int n,m,q;bool g[N][N];//是否连通int f[N];//并查集缩点int tt[N][N],lalal;//会变的边 这条边的新编号int X[Q],Y[Q];bool ooo[Q];struct qq{ char ss[5];int x,y;}s[Q];int ff[N];int find (int x){ return f[x]==x?f[x]:f[x]=find(f[x]);}int find1 (int x){ return ff[x]==x?ff[x]:ff[x]=find1(ff[x]);}int ans[Q],cnt;bool ok[N];int main(){ memset(f,false,sizeof(f)); scanf("%d%d",&n,&m); for (int u=1;u<=n;u++) f[u]=u; for (int u=1;u<=m;u++) { int x,y; scanf("%d%d",&x,&y); if (x>y) swap(x,y); g[x][y]=true; } scanf("%d",&q); memset(tt,-1,sizeof(tt)); for (int u=1;u<=q;u++) { scanf("%s",s[u].ss); if (s[u].ss[0]=='Q') continue; scanf("%d%d",&s[u].x,&s[u].y); if (s[u].x==s[u].y) {u--;q--;continue;} if (s[u].x>s[u].y) swap(s[u].x,s[u].y); g[s[u].x][s[u].y]=(s[u].ss[0]=='A'); if (tt[s[u].x][s[u].y]==-1) { tt[s[u].x][s[u].y]=++lalal; X[lalal]=s[u].x;Y[lalal]=s[u].y; } } for (int u=1;u<=n;u++) { for (int i=u+1;i<=n;i++) { if (g[u][i]==true&&tt[u][i]==-1) { int fx=find(u),fy=find(i); if (fx==fy) continue; f[fx]=fy; } } } for (int u=1;u<=lalal;u++) ooo[u]=g[X[u]][Y[u]]; cnt=0; memset(ok,false,sizeof(ok)); for (int O=q;O>=1;O--) { if (s[O].ss[0]=='Q') { cnt++;ans[cnt]=0; for (int i=1;i<=n;i++) ff[i]=f[i]; for (int i=1;i<=lalal;i++) { if (ooo[i]==true) { int fx=find1(X[i]),fy=find1(Y[i]); if (fx==fy) continue; ff[fx]=fy; } } for (int u=1;u<=n;u++) ok[find1(u)]=true; for (int u=1;u<=n;u++) if (ok[u]) { ans[cnt]++; ok[u]=false; } } else ooo[tt[s[O].x][s[O].y]]=!(s[O].ss[0]=='A'); } for (int u=cnt;u>=1;u--) printf("%d\n",ans[u]); return 0;}
发表评论
最新留言
路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月22日 15时03分45秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
排序算法
2019-03-04
Cookie案例(判断是否首次访问)
2019-03-04
MySQL.数据处理(数据的插入)
2019-03-04
超炫粒子漩涡
2019-03-04
HTML特效代码大全
2019-03-04
Java爬虫.HttpClient
2019-03-04
网页的基本页面实现 ---- 标签
2019-03-04
Java.数组算法(补充)
2019-03-04
Java.常用类.StringBuffer和StringBuilder
2019-03-04
RDD行动操作算子 --- fold(初始值)、reduce
2019-03-04
【Python数据分析与处理 实训02】 ---2012欧洲杯信息分析(数据过滤与排序)
2019-03-04
KeyError: “[‘xxxx‘] not found in axis“
2019-03-04
【Python数据分析与处理 实训05】--- 探索虚拟姓名数据(数据合并)
2019-03-04
java编程常见类型题 --- 面向对象编程、程序逻辑(金字塔)、多线程同步
2019-03-04
java编程常见类型题 --- IO文件操作、程序逻辑(百钱百鸡)、 集合应用
2019-03-04
【Android】 模拟器上运行程序报错
2019-03-04
【sklearn练习】KMeans ---- iris(鸢尾花)数据集聚类评估
2019-03-04