【莫队算法】URAL - 2080 - Wallet
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的更多相关文章
- NBUT 1457 莫队算法 离散化
Sona Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 145 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- NPY and girls-HDU5145莫队算法
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...
- Codeforces617 E . XOR and Favorite Number(莫队算法)
XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...
- 【BZOJ-3052】糖果公园 树上带修莫队算法
3052: [wc2013]糖果公园 Time Limit: 200 Sec Memory Limit: 512 MBSubmit: 883 Solved: 419[Submit][Status] ...
- 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...
- Codeforces 617E XOR and Favorite Number(莫队算法)
题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个. 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减 ...
- 信心题--FUOJ2226(莫队算法)
http://acm.fzu.edu.cn/problem.php?pid=2226 信心题,还说是信心题,题目给的真好.但是一点都不像信心题. 又是一个新的算法,莫队算法 莫队算法是一个用数组就可以 ...
- [BZOJ2038]小Z的袜子(莫队算法)
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 分析:莫队算法 莫队算法是一种思想…… 处理问题:不带修改的区间询问 使用要求:[l-1 ...
随机推荐
- 闲话JavaScript与Cookies
使用 Cookies 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Cookie 又是什么?"某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些 ...
- 修改innodb_flush_log_at_trx_commit参数提升insert性能
最近,在一个系统的慢查询日志里发现有个insert操作很慢,达到秒级,并且是比较简单的SQL语句,把语句拿出来到mysql中直接执行,速度却很快. 这种问题一般不是SQL语句本身的问题,而是在具体的应 ...
- java禁止实例化的工具类
public class Q { /** * @param args */ public static void main(String[] args) { new Person() } } clas ...
- 清理/var/spool/clientmqueue目录释放大量空间
清理/var/spool/clientmqueue目录可以释放大量空间,具体命令是:ls | xargs rm -f 文件太大,rm -rf会由于参数太多而无法删除,所以需要用上面的命令. “Argu ...
- jvm面试必会基本知识
内存: 堆区 1.new的对象实例 ps:(java堆可以细分为新生代和老年代)(通过-xmx和-xms来实现可扩展) 虚拟机栈 局部变量 本地方法栈 为虚拟机使用的native方法服务 方法区 s ...
- 【BZOJ1996】【HNOI2010】合唱队 [区间DP]
合唱队 Time Limit: 4 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Output Sample ...
- [BZOJ1391]解题报告|网络流的又一类建图&Dinic的若干优化
1391: [Ceoi2008]order 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完成. 现在给出这些参数, ...
- [bzoj2631]tree——lct
Brief Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: u v c:将u到v的路径上的点的权值都加上自然数c: u1 v1 u2 ...
- bzoj 1251 裸splay
裸的splay,只需要注意 max[-1]:=-maxlongint 就行了,否则在update的时候子节点的 max值会在max[-1]里选 /*************************** ...
- python3 匿名函数,map/reduce/filter等函数结合应用
匿名函数就是不需要显式的指定函数 # 平方函数 def func1(x): return x**2 print(func1) # 平方函数匿名函数写法 func2=lambda x:x**2 prin ...