7.19T3
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
inline ll read()
{
ll s=; bool f=; char ch=' ';
while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();}
while(isdigit(ch)) {s=(s<<)+(s<<)+(ch^); ch=getchar();}
return (f)?(-s):(s);
}
#define R(x) x=read()
inline void write(ll x)
{
if(x<) {putchar('-'); x=-x;}
if(x<) {putchar(x+''); return;}
write(x/); putchar((x%)+'');
}
#define W(x) write(x),putchar(' ')
#define Wl(x) write(x),putchar('\n')
const int N=;
inline void copy(int &x,int y,int l,int r);
inline void Build(int &x,int l,int r);
inline void Chag(int &x,int y,int l,int r,int Pos,int Val);
inline int Que(int x,int l,int r,int Pos);
int n,m,cnt=,Now;
int fa[N],sz[N];
vector<int>Jh[N];
int rt[N<<];
#define PB push_back
struct Node
{
int ls,rs,id;
}T[N*];
inline int gf(int x){return (x==fa[x])?(x):(fa[x]=gf(fa[x]));}
inline void ubbon(int x,int y)
{
int i,xx=gf(x),yy=gf(y);
if(xx==yy)
{
// cout<<"@@@@@"<<x<<' '<<y<<endl;
copy(rt[Now],rt[Now-],,n); return;
}
if(sz[xx]<sz[yy]) swap(xx,yy);
fa[yy]=xx; sz[xx]+=sz[yy];
int oo[],t=; copy(oo[t],rt[Now-],,n);
for(i=;i<Jh[yy].size();i++)
{
t^=; oo[t]=;
Chag(oo[t],oo[t^],,n,Jh[yy][i],xx);
Jh[xx].PB(Jh[yy][i]);
}
copy(rt[Now],oo[t],,n);
Jh[yy].clear();
}
inline void Build(int &x,int l,int r)
{
x=++cnt;
if(l==r)
{
T[x].id=l; return;
}
int mid=(l+r)>>;
Build(T[x].ls,l,mid); Build(T[x].rs,mid+,r);
}
inline void copy(int &x,int y,int l,int r)
{
x=y;
}
inline void Chag(int &x,int y,int l,int r,int Pos,int Val)
{
x=++cnt; T[x]=T[y];
if(l==r)
{
T[x].id=Val; return;
}
int mid=(l+r)>>;
if(Pos<=mid) Chag(T[x].ls,T[y].ls,l,mid,Pos,Val);
else Chag(T[x].rs,T[y].rs,mid+,r,Pos,Val);
}
inline int Que(int x,int l,int r,int Pos)
{
if(l==r) return T[x].id;
int mid=(l+r)>>;
if(Pos<=mid) return Que(T[x].ls,l,mid,Pos);
else return Que(T[x].rs,mid+,r,Pos);
}
int main()
{
freopen("history.in","r",stdin);
freopen("history.out","w",stdout);
int i,C=,x,y,z,Last; char S[];
R(n); R(m);
for(i=;i<=n;i++) {fa[i]=i; sz[i]=; Jh[i].PB(i);}
Build(rt[Now=],,n);
// for(i=1;i<=n;i++) cout<<Que(rt[Now],1,n,i)<<' ';
// putchar('\n');
int Test=;
while(m--)
{
scanf("%s",S+);
switch (S[])
{
case 'K':
R(C);
break;
case 'R':
R(x); R(y);
x=(x+Last*C)%n; y=(y+Last*C)%n;
x++; y++;
// cout<<"RRR"<<' '<<x<<' '<<y<<endl;
Now++;
ubbon(x,y);
break;
case 'T':
R(x); R(y); R(z);
x++; y++;
if(x==y) {puts("N"); Last=; break;}
int xx=gf(x),yy=gf(y);
if(xx==yy)
{
if(Now<z) puts("Y"),Last=;
else
{
int c1=Que(rt[Now-z],,n,x),c2=Que(rt[Now-z],,n,y);
if(c1==c2) puts("N"),Last=;
else puts("Y"),Last=;
}
}
else puts("N"),Last=;
// if(++Test==185) return 0;
break;
}
// for(i=1;i<=n;i++) cout<<Que(rt[Now],1,n,i)<<' ';
// putchar('\n');
}
return ;
}
7.19T3的更多相关文章
- DIY一个高大上带提醒的计时器,简单实用,你还在等什么
小编心语:锵锵锵!小编我又来了!昨天发了一篇比较实用的<Python聊天室>,鉴于反响还不错,SO ,小编也想给大家多分享点有用的干货,让大家边学边用.好了,闲话不多说,今天要给各位看官们 ...
- web初学之request,session与application
request (1)request的setAttribute()与getAttribute()方法一般都是成对出现,首先通过setAttribute()方法设置属性与属性值,然后通过getAttri ...
- Nginx安装(我觉得我这篇可能是全网最清晰的一篇安装步骤了)
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/46aadb8f-5 ...
随机推荐
- linux系统安全设置加固
描述 设置SSH空闲超时退出时间,可降低未授权用户访问其他用户ssh会话的风险 检查提示 -- 加固建议 编辑/etc/ssh/sshd_config,将ClientAliveInterval ...
- 使用haystack实现django全文检索搜索引擎功能
前言 django是python语言的一个web框架,功能强大.配合一些插件可为web网站很方便地添加搜索功能. 搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单. 中文搜索 ...
- 牛客 133D 挑选队友 (分治FFT)
大意: $n$个人, 分别属于$m$个组, 要求选出$k$个人, 使得每组至少有一人, 求方案数. 显然答案为$\prod((1+x)^{a_i}-1)$的第$k$项系数, 分治$FFT$即可. #i ...
- ACM-ICPC 2017北京
J. Pangu and Stones 大意: 给定$n$堆石子, $(n\le 100)$, 每次操作任选连续的至少$L$堆至多$R$堆合并, 代价为合并石子的总数, 求合并为$1$堆的最少花费. ...
- String的equals和hashCode方法
对于判断对象是否相等,肯定需要重写它的equals和hashCode方法.不然使用默认的方法只会比较地址,因此会出现错误. 以String类为例,且看它的equals方法 public boolean ...
- VBA学习资料分享-3
VBA创建/发送OUTLOOK邮件时怎么加上默认签名呢?用过OUTLOOK写邮件的人都知道,如果你设置了默认签名,那么在创建空白邮件的时候就会自动加上你设置的签名.根据这一特性,我们可以在用VBA创建 ...
- 【原创】大叔经验分享(82)logstash一个实例运行多个配置文件
logstash一个实例运行多个配置文件,将所有配置文件放到以下目录即可 /usr/share/logstash/pipeline 但是默认行为不是每个配置文件独立运行,而是作为一个整体,每个inpu ...
- 安装笔记, caffe 、 opencv等
1. 1.1 opencv static linux mkdir build & cd build cmake .. -LH 这句话用来查看编译选项 如果不知道编译啥 可以用这个查看一下 ...
- phpspider爬虫框架的使用
这几天使用PHP的爬虫框架爬取了一些数据,发现还是挺方便的,先上爬虫框架的文档 phpspider框架文档 使用方法其实在文档中写的很清楚而且在demo中也有使用示例,这里放下我自己的代码做个笔记 & ...
- 修改一张MyISAM表row_format为fixed为InnoDB表报错处理
最近优化GTID模式下事务表和非事务表更新报错处理时,发现某几张表更改存储引擎为InnoDB报错如下: mysql> alter table sc_xxx_video_xxxxengine = ...