可以用并查集维护连通性,删除可以用按置合并并查集,但删掉一条边后无法再维护两点的联通性了(因为产生环的边是不加入的)
暴力思路是, 考虑前i个操作后边的集合,暴力加入即可,但复杂度是$o(n^2)$的
用分块,对于每一个块,先求出前面所有块操作后边的集合,去掉这个块内删掉的边,这个并查集一定是之后这个块内每一个点都有的并查集,即计算每一个点时都恢复到这个并查集(恢复时记录下修改的点,因此也不能路径压缩)
之后用暴力的做法,这个集合大小是$o(\sqrt{n})$的,那么总复杂度就是$o(n\sqrt{n})$,可以通过
(这个算法是离线,因为它需要之后那个块内的操作,但这些操作最多只会衍生出两种操作,只要存在一个就都不要放入原并查集中即可)

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define K 5000
4 #define N 200005
5 #define pii pair<int,int>
6 #define fi first
7 #define se second
8 int n,m,ans,p[N],x[N],y[N],f[N],g[N],sz[N],v1[N];
9 pii v2[N];
10 set<pii>g1,g2;
11 set<pii>::iterator it;
12 int find(int k){
13 if (k==f[k])return k;
14 return find(f[k]);
15 }
16 void check(int x,int y){
17 if (x>y)swap(x,y);
18 pii o=make_pair(x,y);
19 if (g1.find(o)!=g1.end()){
20 g1.erase(o);
21 g2.insert(o);
22 }
23 }
24 void update(pii o){
25 if (g2.find(o)==g2.end())g2.insert(o);
26 else g2.erase(o);
27 }
28 void add(int x,int y){
29 x=find(x);
30 y=find(y);
31 if (x==y)return;
32 if (sz[x]<sz[y])swap(x,y);
33 v1[++v1[0]]=y;
34 f[y]=x;
35 v2[v1[0]]=make_pair(x,sz[x]);
36 sz[x]=max(sz[x],sz[y]+1);
37 }
38 int main(){
39 scanf("%d%d",&n,&m);
40 for(int i=1;i<=m;i++)scanf("%d%d%d",&p[i],&x[i],&y[i]);
41 for(int i=1;i<=m;i+=K){
42 int k=min(m,i+K-1);
43 g2.clear();
44 for(int j=i;j<=k;j++)
45 if (p[j]==1){
46 check(x[j],y[j]);
47 check(x[j]%n+1,y[j]%n+1);
48 }
49 for(int j=1;j<=n;j++)f[j]=j;
50 for(it=g1.begin();it!=g1.end();it++)add((*it).fi,(*it).se);
51 v1[0]=0;
52 for(int j=i;j<=k;j++){
53 x[j]=(x[j]+ans-1)%n+1;
54 y[j]=(y[j]+ans-1)%n+1;
55 if (x[j]>y[j])swap(x[j],y[j]);
56 if (p[j]==1)update(make_pair(x[j],y[j]));
57 else{
58 for(int l=1;l<=v1[0];l++){
59 f[v1[l]]=v1[l];
60 sz[v2[l].fi]=v2[l].se;
61 }
62 v1[0]=0;
63 for(it=g2.begin();it!=g2.end();it++)add((*it).fi,(*it).se);
64 printf("%d",ans=(find(x[j])==find(y[j])));
65 }
66 }
67 for(it=g2.begin();it!=g2.end();it++)g1.insert(*it);
68 }
69 }

[cf1217F]Forced Online Queries Problem的更多相关文章

  1. 【CF1217F】Forced Online Queries Problem

    题意 题目链接 动态图连通性,加密方式为 \((x+l-1)\bmod n +1\) (\(l=[上一次询问的两点连通]\)). 点数 \(n\),操作数 \(m\) \(\le 2\times 10 ...

  2. @codeforces - 1217F@ Forced Online Queries Problem

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 给定一个 n 个点的无向图,标号从 1 到 n.一开始没有任何边 ...

  3. [Codeforces 863D]Yet Another Array Queries Problem

    Description You are given an array a of size n, and q queries to it. There are queries of two types: ...

  4. 863D - Yet Another Array Queries Problem(思维)

    原题连接:http://codeforces.com/problemset/problem/863/D 题意:对a数列有两种操作: 1 l r ,[l, r] 区间的数字滚动,即a[i+1]=a[i] ...

  5. Yet Another Array Queries Problem CodeForces - 863D (暴力/思维)

    You are given an array a of size n, and q queries to it. There are queries of two types: 1 li ri — p ...

  6. Educational Codeforces Round 72 (Rated for Div. 2) Solution

    传送门 A. Creating a Character 设读入的数据分别为 $a,b,c$ 对于一种合法的分配,设分了 $x$ 给 $a$ 那么有 $a+x>b+(c-x)$,整理得到 $x&g ...

  7. Codechef Dynamic Trees and Queries

    Home » Practice(Hard) » Dynamic Trees and Queries Problem Code: ANUDTQSubmit https://www.codechef.co ...

  8. CodeChef---- February Challenge 2018----Chef and odd queries(复杂度分块计算)

    链接    https://www.codechef.com/FEB18/problems/CHANOQ/ Chef and odd queries Problem Code: CHANOQ Chef ...

  9. CodeChef Gcd Queries

    Gcd Queries   Problem code: GCDQ   Submit All Submissions   All submissions for this problem are ava ...

随机推荐

  1. 官宣!ElasticJob 3.0.0 版本正式发布

    ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成.它通过弹性调度.资源管控.以及 ...

  2. 工作3年的Java程序员,轻松拿到阿里P6Offer,只因为他搞明白了Redis这几个问题!!

    Redis中的多路复用模型 Redis6用到了多线程?那多线程应用在哪些地方,引入多线程后,又改如何保证线程安全性呢? 同时,如何在性能和线程安全性方面做好平衡? 关于Redis的单线程模型 在Red ...

  3. ClickHouse 存算分离架构探索

    背景 ClickHouse 作为开源 OLAP 引擎,因其出色的性能表现在大数据生态中得到了广泛的应用.区别于 Hadoop 生态组件通常依赖 HDFS 作为底层的数据存储,ClickHouse 使用 ...

  4. 分布式全局ID与分布式事务

    1. 概述 老话说的好:人不可貌相,海水不可斗量.以貌取人是非常不好的,我们要平等的对待每一个人. 言归正传,今天我们来聊一下分布式全局 ID 与分布式事务. 2. 分布式全局ID 2.1 分布式数据 ...

  5. SpringCloud微服务实战——搭建企业级开发框架(六):使用knife4j集成Swagger2接口文档

    knife4j是为集成Swagger生成api文档的增强解决方案,前后端Java代码以及前端Ui模块进行分离,在微服务架构下使用更加灵活, 提供专注于Swagger的增强解决方案,不同于只是改善增强前 ...

  6. Coursera Deep Learning笔记 改善深层神经网络:超参数调试 正则化以及梯度相关

    笔记:Andrew Ng's Deeping Learning视频 参考:https://xienaoban.github.io/posts/41302.html 参考:https://blog.cs ...

  7. python查询对像所有方法

    鉴于学习时好多参数对像都不知道是什么玩意有什么方法,搜了半天一个 """arg为一个对像,下面是打印所有对像方法"""for i, func ...

  8. SpringBoot 整合 Thymeleaf & 如何使用后台模板快速搭建项目

    如果你和我一样,是一名 Java 道路上的编程男孩,其实我不太建议你花时间学 Thymeleaf,当然他的思想还是值得借鉴的.但是他的本质在我看来就是 Jsp 技术的翻版(Jsp 现在用的真的很少很少 ...

  9. [no code][scrum meeting] Beta 10

    $( "#cnblogs_post_body" ).catalog() 例会时间:5月25日15:00,主持者:伦泽标 下次例会时间:5月26日11:30,主持者: 一.工作汇报 ...

  10. Ubuntu Python2 和 Python3 共存 切换

    例如 你写了代码 创建一个文件 在终端 vim test.py 然后写入代码 print "hello world" 接着运行代码 python test.py 会输出 hello ...