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;elseanss[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;
}

转载于:https://www.cnblogs.com/autsky-jadek/p/6375208.html

【莫队算法】URAL - 2080 - Wallet相关推荐

  1. NBUT 1457 Sona(莫队算法+离散化)

    [1457] Sona 时间限制: 5000 ms 内存限制: 65535 K 问题描述 Sona, Maven of the Strings. Of cause, she can play the ...

  2. XOR and Favorite Number CF340E 莫队算法

    题目链接 题意:求给定询问区间[L,R]问有多少连续区间异或值等k,多次询问可以离线. a[i]^a[i+1]^a[i+2]^a[n]=(a[1]^a[2]^a[3]^...^a[i-1])^(a[1 ...

  3. Hdu 6534 Chika and Friendly Pairs 莫队算法+树状数组

    题目链接 题意求给区间[L,R]中有少对(i,j)满足i<j且abs(a[i]-a[j])<=k. 首先来说暴力的方法就是离散化,然后用树状数组来维护,但是m次询问,m很大,所以说一定会t ...

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

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 9894  Solved: 4561 [Su ...

  5. 数据结构(莫队算法):国家集训队2010 小Z的袜子

    [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...

  6. C++ 莫队算法(转)

    胡小兔的良心莫队教程:莫队.带修改莫队.树上莫队 在开始学习莫队之前,照例先甩一道例题:BZOJ 1878 HH的项链. 题意:求区间内数的个数,相同的数只算一次. 在我关于这道题的上一篇题解中,我使 ...

  7. cf D. Powerful array 莫队算法

    D. Powerful array 题意:给定一个序列>>每次查询一个区间>>查询该区间内 出现过的数字*出现的次数的平方 的和 思路:学习莫队的第一题或者说小z的袜子是第一题 ...

  8. 【bzoj5016】[Snoi2017]一个简单的询问 莫队算法

    题目描述 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. 输入 第一行,一个数字N,表 ...

  9. nyoj 945 Just do it(莫队算法)

    Just do it 时间限制:2000 ms  |  内存限制:65535 KB 难度:4 描述 蚂蚁终于忍受不了宇宙总部要回地球了,它叮嘱我不要再编它的故事了, 有啥事直接说,有啥问题直接问就好了 ...

  10. hdu 4358(莫队算法+dfs序列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358 解题思路:用dfs求出整棵树的dfs序列,这样以u为根节点的子树就转化到相对应的区间上了.由于是 ...

最新文章

  1. 业内公认的AI发展最大挑战,有哪些技术突破机会?
  2. Case When ELSE END语句
  3. (Linux 2.6设备管理机制)kobject和kset
  4. 网管型工业以太网交换机的几种管理方式
  5. 路由算法及路由协议(详解)
  6. java二期_享学二期java架构师
  7. 整合servlet、整个filter、整合listener、文件上传
  8. Docker : Docker使用DockerFile入门案例
  9. go语言 select
  10. 怎么会Sql serverW数据库模型图转化成ord于--您还可以查看属性信息字段
  11. 实验四:用一维数组输出等腰三角形的杨辉三角
  12. 粒子群优化算法python
  13. Mysqldump 1449 错误解决 mysqldump: Got error: 1449
  14. 工程机械行业PLM实施背景
  15. Python硬件编程实战------书评
  16. charles抓PC端的包
  17. vue导航使用及页面布局样例
  18. [转]一个应届计算机毕业生的2012求职之路
  19. Peewee 使用手册
  20. C#Windows7任务栏开发Thumbnail Toolbars(缩略图、工具栏按钮)

热门文章

  1. 灰度世界算法(Gray World Algorithm)
  2. 求字符串的最小正周期
  3. 智能优化算法:世界杯优化算法-附代码
  4. arcgis取反+掩膜提取
  5. 基于PCA进行多光谱和全色图像融合
  6. EXCEL 保护工作表、工作薄不被破坏
  7. 解决eclispe SVN 创建资源库报错,无法验证:SVN…… 504 Connection to server timed out
  8. 一个电商项目【拉手团购】购物App(已开源)
  9. python gif图 ctf_从两道CTF实例看python格式化字符串漏洞
  10. jQuery.ajax(解决跨域问题,jquery解决AJAX跨域问题