Description:给定\(n\)个操作,向集合中加入一个数(保证每个数不同)或者查询集合内\(\text{%Y}\)的最小值

Solution:对于小于\(\sqrt{300000}\)的直接暴力,大于它的跳1,Y,Y的倍数,离Y最近的数,这个可以用并查集维护,离线好维护,我们直接离线,对于加点直接变成删点

写的时候级邪,要么是爆栈,要么是本地对拍没过不敢交,结果网上A了
Code:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int MAXX=3e5+10;
int g[550];
int f[MAXX];
int n,ans[MAXX];
bool vis[MAXX];
struct node
{
int opt,val;
}t[MAXX];
inline int find(int x){
if(f[x]==x)return x;
else return f[x]=find(f[x]);
}
int main(){
scanf("%d",&n);
memset(ans,0x3f,sizeof(ans));
memset(g,0x3f,sizeof(g));
for(int i=1;i<=n;++i){
char s[5];
int val;
scanf("%s%d",s,&val);
t[i].val=val;
if(s[0]=='A'){
t[i].opt=0;
vis[val]=1;
for(int j=1;j<=549;++j)g[j]=min(g[j],val%j);
}
else {
t[i].opt=1;
if(t[i].val<=549)ans[i]=g[t[i].val];
}
}
for(int i=1;i<=300000;++i){
if(!vis[i])f[i]=i+1;
else f[i]=i;
}
f[300001]=300001;
for(int i=n;i>=1;i--){
if(t[i].opt==0)f[t[i].val]=t[i].val+1;
else {
if(t[i].val>549){
for(int j=0;j<=300000;j+=t[i].val){
int x=find(max(j,1));
if(x<=300000)ans[i]=min(ans[i],x%t[i].val);
}
}
}
}
for(int i=1;i<=n;++i)if(t[i].opt==1)cout<<ans[i]<<endl;
return 0;
}

BZOJ4320 homework的更多相关文章

  1. 题解-bzoj4320 Homework

    Problem bzoj4320 Solution 前置技能:分块+线段树+卡常+一点小小的数学知识 考试时A的 这种题无论怎么处理总有瓶颈,套路分块,设\(k\)以下的插入时直接暴力预处理,查询时直 ...

  2. bzoj4320 homework 题解

    题面链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4320 令M=sqrt(mx),把询问的Y按M 分成两种不同的处理方式. 1.对于> ...

  3. 【BZOJ4320】ShangHai2006 Homework 分段+并查集

    [BZOJ4320]ShangHai2006 Homework Description   1:在人物集合 S 中加入一个新的程序员,其代号为 X,保证 X 在当前集合中不存在.    2:在当前的人 ...

  4. [BZOJ4320][ShangHai2006]Homework(根号分治+并查集)

    对于<=sqrt(300000)的询问,对每个模数直接记录结果,每次加入新数时暴力更新每个模数的结果. 对于>sqrt(300000)的询问,枚举倍数,每次查询大于等于这个倍数的最小数是多 ...

  5. BZOJ4320 ShangHai2006 Homework(分块+并查集)

    考虑根号分块.对于<√3e5的模数,每加入一个数就暴力更新最小值:对于>√3e5的模数,由于最多被分成√3e5块,查询时对每一块找最小值,这用一些正常的DS显然可以做到log,但不太跑得过 ...

  6. 【bzoj4320】【ShangHai2006 Homework】【并查集+离线处理】

    ShangHai2006 Homework Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 918  Solved: 460[Submit][Statu ...

  7. BZOJ4320 : ShangHai2006 Homework

    取$M=\sqrt{300000}$. 设$g[i]$表示程序员的$\bmod i$最小的值. 若$Y<M$,那么可以在$O(M)$时间内完成对所有$g[i]$的修改,$O(1)$时间内完成查询 ...

  8. 【bzoj4320】ShangHai2006 Homework

    若Y小于等于sqrt(300000),暴力,对所有的插入的数都更新mn[i]. 若Y大于sqrt(300000),枚举kY,用并查集维护>=i的第一个数,这样只支持删除操作是O(1),然后倒着枚 ...

  9. bzoj 4320: ShangHai2006 Homework

    4320: ShangHai2006 Homework Time Limit: 10 Sec Memory Limit: 128 MB Description 1:在人物集合 S 中加入一个新的程序员 ...

随机推荐

  1. python 工具包安装

    (1)wxPython是python的常用gui yum install wxPython (2)numpy, scipy是常用的数学处理工具包 yum install scipy

  2. 解决The hierarchy of the type is inconsistent错误

    可能的原因:自己的类继承于某个类,这个类或者这个类继承的类或者再往上继承的某个类所在的jar包没有被引入. 比如:使用Spring的AOP时,假设须要继承MethodBeforeAdvice和Afte ...

  3. 第8章5节《MonkeyRunner源代码剖析》MonkeyRunner启动执行过程-执行測试脚本

    MonkeyRunner在准备好AndroidDebugBridge和DeviceMonitor等服务之后,就基本上是攻克了和目标设备通信的问题了,那往下须要做的就是把測试脚本执行起来了. 178 p ...

  4. What&#39;s Wrong With Hue Oozie Editor?

    本文原文出处: http://blog.csdn.net/bluishglc/article/details/47021019 严禁不论什么形式的转载,否则将托付CSDN官方维护权益! First, ...

  5. lenovo G系列重装系统

    lenovo G41 的笔记本默认安装的是win8 中文版 的操作系统,使用非常不方便,用U盘重装成WIN7的系统. 1.用启动工具软件制作U盘启动盘.  详细能够參照  http://www.uqi ...

  6. select多选 multiple的使用

    select多选  multiple的使用 <html> <head> <script type="text/javascript"> func ...

  7. nj10---文件读取

    介绍:fs模块是文件操作的封装,它提供了文件的读取,写入,更名,删除,遍历目录,链接POSIX文件系统操作.与其他模块不同的是,fs模块中所有的操作都提供了异步和同步两个版本,例如读取文件内容函数异步 ...

  8. android JNI 一维数组、二维数组的访问与使用

    在JNI中访问JAVA类中的整型.浮点型.字符型的数据比较简单,举一个简单的例子,如下: //得到类名 jclass cls = (*env)->GetObjectClass(env, obj) ...

  9. Boostrap零散

    12 row 是核心控件 class="form-control" 弹窗口<input data-toggle="modal" data-target=& ...

  10. miniUI-SelectGrid 弹出选择表格-翻页选中

    介绍 mini中已经给出 弹出表格的里例子 :MiniUi版本 但是在应用过程中遇到写小问题就是没有办法翻页后一并连之前翻页选中的一起提交 以下是解决方案 正文 下面首先介绍  JS 代码 //存储已 ...