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

#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define MAXN 300010
#define N 300000 struct Node
{
int t,k,ans;
}q[MAXN]; int n; int fa[MAXN],f[MAXN],m[310]; char ch[10]; int find(int x)
{
return fa[x]==x ? fa[x] : fa[x]=find(fa[x]);
} int main()
{
memset(m,127/3,sizeof(m));
scanf("%d",&n);
for (int i=1;i<=N+1;i++)
fa[i]=i;
for (int i=1;i<=n;i++)
{
scanf("%s%d",ch,&q[i].k);
q[i].t=ch[0]-'A';
if (q[i].t==0)
{
for (int j=1;j<=300;j++)
m[j]=min(m[j],q[i].k%j);
f[q[i].k]=1;
}
if (q[i].t==1 && q[i].k<=300)
q[i].ans=m[q[i].k];
}
for (int i=1;i<=N;i++)
if (!f[i])
fa[i]=i+1;
for (int i=n;i>=1;i--)
{
if (q[i].t==0)
fa[q[i].k]=q[i].k+1;
else
{
int t,minn=N;
if (q[i].k>300)
{
for (int j=0;j<=N;j+=q[i].k)
{
t=find(max(j,1));
if (t<=N)
minn=min(minn,t%q[i].k);
}
q[i].ans=minn;
}
}
}
for (int i=1;i<=n;i++)
if (q[i].t)
printf("%d\n",q[i].ans);
return 0;
}

  

【bzoj4320】ShangHai2006 Homework的更多相关文章

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

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

  2. 【题解】HDU Homework(倍增)

    [题解]HDU Homework(倍增) 矩阵题一定要多多检查一下是否行列反了... 一百个递推项一定要存101个 说多了都是泪啊 一下午就做了这一道题因为实在是太菜了太久没写这种矩阵的题目... 设 ...

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

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

  4. 【HDU4471】Homework(矩阵快速幂)

    [HDU4471]Homework(矩阵快速幂) 题面 Vjudge 给定一个数列的前\(m\)项,给定一个和前\(t\)项相关的递推式. 有\(q\)个位置的递推式单独给出,求数列第\(n\)项. ...

  5. 【BZOJ3379】[Usaco2004 Open]Turning in Homework 交作业 DP

    [BZOJ3379][Usaco2004 Open]Turning in Homework 交作业 Description     贝茜有C(1≤C≤1000)门科目的作业要上交,之后她要去坐巴士和奶 ...

  6. 【hackerrank week of code 26】Hard Homework

    [题目链接]:https://www.hackerrank.com/contests/w26/challenges/hard-homework/problem [题意] 给你一个式子:sin(x)+s ...

  7. bzoj 4320: ShangHai2006 Homework

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

  8. 【POJ2094】【差分序列】Angry Teacher

    Description Mr. O'Cruel is teaching Math to ninth grade students. Students of course are very lazy, ...

  9. hdu6390GuGuFishtion【数论】

    GuGuFishtion Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

随机推荐

  1. spring tool suite (sts) 创建springmvc(没有实践)

    摘自:STS(Spring Tool Suite)建立默认的spring mvc项目 老外的原创,网址:http://www.codejava.NET/frameworks/spring/spring ...

  2. 第三讲:post-processsing with vcs+ files

    1,dump wave  by system function $vcdpluson(level_number,module_instance,....|net_or_reg) $vcdplusoff ...

  3. UART中RTS、CTS

    RTS (Require ToSend,发送请求)为输出信号,用于指示本设备准备好可接收数据,低电平有效,低电平说明本设备可以接收数据. CTS (Clear ToSend,发送允许)为输入信号,用于 ...

  4. asp.net mvc数据验证

    文章:asp.net mvc3 的数据验证(一) 文章:ASP.NET MVC下的四种验证编程方式 这个讲了在一个地方展示验证信息 文章:[ASP.NET MVC系列]浅谈数据注解和验证 这个在每个输 ...

  5. HDU 3397 双lazy标记的问题

    题目大意 对一个只有0和1的序列,支持以下几种操作1.将区间所有的值变成12.将区间所有的值变为03.将区间的0和1翻转(0变成1 1变成0)4.求区间中1的个数5.求区间连续最长的1的个数 http ...

  6. HDU 3062 简单的2-SAT问题

    在2-SAT,最让我纠结的还是添加有向线段的函数了 void add_clause(int i,int a,int j,int b){    int m=2*i+a;    int n=2*j+b;  ...

  7. 自定义PHP错误报告处理方式

    <?php //在php中注册一个函数, 来处理错误报告, 而不按原来的方式处理了 set_error_handler("myerrorfun"); $mess = &quo ...

  8. j_spring_security_check 404错误

    折腾了好久,还是写一篇备忘 折腾了好久,还是写一篇备忘 首先检查路径 <form class="form-signin" method="POST" ac ...

  9. 通过分析exevc系统调用处理过程来理解Linux内核如何装载和启动一个可执行程序

    前言说明 本篇为网易云课堂Linux内核分析课程的第七周作业,本次作业我们将具体来分析exec*函数对应的系统调用处理过程,来分析Linux内核如何来执行一个可执行程序,由于有一个在网易云课堂共同学习 ...

  10. 2017多校Round10(hdu6171~hdu6181)

    补题进度:5/11 1001(双向BFS) 题意: 给你一个类似移子游戏,给你初始状态和终止状态,问初始状态到终止状态至少要移多少步,如果步数>20就-1 分析: 很明显的BFS了,不过普通的B ...