http://www.cnblogs.com/icode-girl/p/5783983.html

要注意卡片没有都被使用的情况。

#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 100010
int K,n,a[N],nex[N],now[N],m,anss[N];
bool vis[N];
struct ASK{int l,r,p;}Q[N];
int num[N];
bool operator < (const ASK &a,const ASK &b)
{return num[a.l]!=num[b.l] ? num[a.l]<num[b.l] : a.r<b.r;}
void makeblock()
{
int sz=sqrt(n),sum=1; if(!sz) sz=1;
for(;sum*sz<n;++sum)
{
int r=sum*sz;
for(int i=sz*(sum-1)+1;i<=r;++i)
num[i]=sum;
}
for(int i=sz*(sum-1)+1;i<=n;++i)
num[i]=sum;
}
int T[N],ans;
void Insert(int x)
{
if(!T[x]) ++ans;
++T[x];
}
void Delete(int x)
{
--T[x];
if(!T[x]) --ans;
}
int main()
{
//freopen("c.in","r",stdin);
scanf("%d%d",&K,&n);
for(int i=1;i<=n;++i)
scanf("%d",&a[i]);
int k=0;
for(int i=1;i<=n;++i)
if(!vis[a[i]])
{
++k;
vis[a[i]]=1;
printf("%d%c",a[i],k==K ? '\n' : ' ');
}
for(int i=1;i<=K;++i)
if(!vis[i])
{
++k;
printf("%d%c",i,k==K ? '\n' : ' ');
}
for(int i=n;i>=1;--i)
{
nex[i]=now[a[i]];
now[a[i]]=i;
}
for(int i=1;i<=n;++i)
if(nex[i]>i+1)
{
Q[++m].l=i+1;
Q[m].r=nex[i]-1;
Q[m].p=i;
}
else if(nex[i]==i+1)
anss[i]=0;
else
anss[i]=K-1;
makeblock();
sort(Q+1,Q+m+1);
for(int i=Q[1].l;i<=Q[1].r;++i) Insert(a[i]);
anss[Q[1].p]=ans;
for(int i=2;i<=m;++i)
{
if(Q[i].l<Q[i-1].l){for(int j=Q[i-1].l-1;j>=Q[i].l;--j)Insert(a[j]);}
else{for(int j=Q[i-1].l;j<Q[i].l;++j)Delete(a[j]);}
if(Q[i].r<Q[i-1].r){for(int j=Q[i-1].r;j>Q[i].r;--j)Delete(a[j]);}
else{for(int j=Q[i-1].r+1;j<=Q[i].r;++j)Insert(a[j]);}
anss[Q[i].p]=ans;
}
for(int i=1;i<=n;++i)
printf("%d\n",anss[i]);
return 0;
}

【莫队算法】URAL - 2080 - Wallet的更多相关文章

  1. NBUT 1457 莫队算法 离散化

    Sona Time Limit:5000MS     Memory Limit:65535KB     64bit IO Format: Submit Status Practice NBUT 145 ...

  2. BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 7687  Solved: 3516[Subm ...

  3. NPY and girls-HDU5145莫队算法

    Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...

  4. Codeforces617 E . XOR and Favorite Number(莫队算法)

    XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...

  5. Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法

    题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...

  6. 【BZOJ-3052】糖果公园 树上带修莫队算法

    3052: [wc2013]糖果公园 Time Limit: 200 Sec  Memory Limit: 512 MBSubmit: 883  Solved: 419[Submit][Status] ...

  7. 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)

    链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...

  8. Codeforces 617E XOR and Favorite Number(莫队算法)

    题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个. 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减 ...

  9. 信心题--FUOJ2226(莫队算法)

    http://acm.fzu.edu.cn/problem.php?pid=2226 信心题,还说是信心题,题目给的真好.但是一点都不像信心题. 又是一个新的算法,莫队算法 莫队算法是一个用数组就可以 ...

  10. [BZOJ2038]小Z的袜子(莫队算法)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 分析:莫队算法 莫队算法是一种思想…… 处理问题:不带修改的区间询问 使用要求:[l-1 ...

随机推荐

  1. git上传本地项目

    1.(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2.把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点 ...

  2. 关闭listener监听日志

    有几次碰到过由于监听日志文件大小达到几G,使得在连接时非常慢,像hang住一样,windows下的监听日志达到4G限制,后续连接如果无法写监听日志,就会产生TNS-12537报错,可以通过关闭写监听日 ...

  3. HDU1907(尼姆博弈)

    John Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submis ...

  4. python基础===python3中 http.client 和 urllib的那些事

    import http.client #python3中没有了 httplib的库 #python 3.x中urllib库和urilib2库合并成了urllib库.. #其中urllib2.urlop ...

  5. 安装cuda8.0时出现错误:Missing recommended library: libGLU.so Missing recommended library: libGL.so

    安装cuda8.0时出现错误: Missing recommended library: libGLU.soMissing recommended library: libGL.so Installi ...

  6. Linux中inet_aton的问题(IP转整数)

    在网上看到一篇如下文章: 原题目是说的mysql的陷阱,但是仔细分析起来,应该是Linux,c在转换的时间的问题,不符合ip串转整形的通用算法,所以用c转的时候还需注意 linux C中有个函数ine ...

  7. docker从零开始 存储(五)存储驱动介绍

    关于存储驱动程序 要有效地使用存储驱动程序,了解Docker如何构建和存储镜像以及容器如何使用这些镜像非常重要.您可以使用此信息做出明智的选择,以确定从应用程序中保留数据的最佳方法,并避免在此过程中出 ...

  8. ubuntu下使用mysql的一点笔记

    因为使用的是apt-get安装的.所以,mysql的安装路径在/var/lib/mysql下面 在普通用户下,cd /var/lib/mysql,居然提示: bash:cd:mysql Permiss ...

  9. Python 进阶 之 yield

    .转载自:https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ Python yield 使用浅析: 您可能听说过, ...

  10. vs2008下Error LINK2005: already defined in ...的一种解决方式

    原因:不同的库之间都定义了相同的名称. 方法:右键工程->Properties->Configuration->Linker->Input 在右侧的Additional Dep ...