题面链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4320

令M=sqrt(mx),把询问的Y按<M和>M 分成两种不同的处理方式。

1、对于>M的Y,我们发现它的倍数不超过M个,于是可以枚举倍数,找到往后第一个已经被加入集合的值,用差值更新答案。

这个东西我们可以离线,倒序枚举询问,然后用并查集维护。

单次查询O(M),更新O(1).

2、对于<M的Y,倍数肯定是>M,不过这样的Y也就M个,可以直接拿数组存,g[i]表示目前%i最小为多少(即答案),更新的时候直接遍历M个位置取min即可。

单次查询O(1),更新O(M).

所以总时间复杂度为O(n*sqrt(n))的。

#include<bits/stdc++.h>
using namespace std;
const int N = 300005;
#define rep(i,a,b) for(register int i=(a);i<=(b);++i)
#define dwn(i,a,b) for(register int i=(a);i>=(b);--i)
typedef long long ll;
int n,X[N],Y[N],ans[N],fa[N],g[N],kua,mx,mn;
bool vis[N];
char s[2];
int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
int main(){
memset(ans,-1,sizeof(ans));
scanf("%d",&n);
rep(i,1,n){
scanf("%s%d",s,&Y[i]);
if(s[0]=='A')X[i]=1,vis[Y[i]]=1;
else X[i]=2;
mx=max(mx,Y[i]);
}
kua=sqrt(mx)+1;
rep(i,0,mx+1)fa[i]=i;
dwn(i,mx,0){
if(vis[i])continue;
fa[find(i)]=find(i+1);
}
memset(g,0x3f,sizeof(g));
rep(i,1,n){
if(X[i]==1){
rep(j,1,kua){
g[j]=min(g[j],Y[i]%j);
}
}
else if(Y[i]<=kua)ans[i]=g[Y[i]];
}
dwn(i,n,1){
if(X[i]==1){
fa[find(Y[i])]=find(Y[i]+1);
}
else if(Y[i]>kua){
mn=1e9;
for(int j=0;j<=mx;j+=Y[i]){
if(find(j)>mx)continue;
mn=min(mn,find(j)-j);
}
ans[i]=mn;
}
}
rep(i,1,n)if(~ans[i])printf("%d\n",ans[i]);
return 0;
}

最新文章

  1. S3C2440UART之FIFO
  2. 兼容性js中setTimeout 传参“保值”方案
  3. RecyclerView notifyDataSetChanged不起作用
  4. MFC CheckBox
  5. Charles的使用
  6. Mina、Netty、Twisted一起学(二):TCP消息边界问题及按行分割消息
  7. 如何下载某些 flash 在线视频 并使用ffmpeg下载分段并加密的m3u8视频流
  8. Hibernate,Session清理缓存时间点
  9. linux地址空间划分
  10. FusionChart 导出图片 功能实现(转载)
  11. hadoop namenode多次格式化后,导致datanode启动不了
  12. 会用errno,事半功倍
  13. #pragma anon_unions, #pragma no_anon_unions
  14. Chapter 2 Open Book——2
  15. [DeeplearningAI笔记]神经网络与深度学习4.深度神经网络
  16. https认证
  17. Drools为什么没有规则流Flow Flie
  18. 微星笔记本每次都进bios
  19. Zabbix4.0监控URL
  20. 委托、Lambda表达式、事件系列04,委托链是怎样形成的, 多播委托, 调用委托链方法,委托链异常处理

热门文章

  1. Findbug插件静态java代码扫描工具使用
  2. cocos2d-x 3.7 win7 32+Android 环境配置
  3. 请求文件下载URL过长处理
  4. 表现与数据分离;前台MVC
  5. 转:java身份证格式强校验
  6. c++ valarray 实现矩阵与向量相乘
  7. 浅谈自学Python之路(day1)
  8. JDBC-ODBC桥接器连接Access数据库
  9. React新的安装less的方法
  10. git上