【莫队算法】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 ...
随机推荐
- typescript的入门
命令行使用tsc 1.安装typescript npm install -g typescript 2.新建一个index.ts 输入export hello class{} 3.编译 tsc ind ...
- 获取系统内RAR安装路径
RegistryKey the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVers ...
- Java中Class<T>与Class<?>的区别
E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定 ...
- jquery实现通用结构折叠面板效果
效果截图: 说明:可以任意添加多个类似结构样式,点击标题栏图片对应隐藏.显示. jquery代码: 思路一:基本方法 <script src="http://apps.bdimg.co ...
- 有关getClassLoader().getResourceAsStream(fileName)、class.getResourceAsStream(fileName)和().getContextClassLoader().getResourceAsStream(fileName)的区别
一:前言 在自己获取属性时,碰见了XX.class.getResourceAsStream(fileName),自己对这个其实不是很理解,上网查了下资料,又看到了上述的几个,所以就研究了下. 二:内容 ...
- [Leetcode Week3]Evaluate Division
Evaluate Division题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/evaluate-division/description/ Desc ...
- HDU1166(线段树单点更新区间查询)
敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- POJ3180(有向图强连通分量结点数>=2的个数)
The Cow Prom Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1451 Accepted: 922 Descr ...
- Selenium IDE安装和检查获取的控件路径技巧
来源:http://www.jianshu.com/p/0ea2dc83549f 从学习Selenium 开始,都是自己写脚本,后来得知有个插件Selenium IDE可以录制脚本,也懒得用了,觉得自 ...
- SQlServer的日期相减(间隔)datediff函数
select datediff(year, 开始日期,结束日期); --两日期间隔年 select datediff(quarter, 开始日期,结束日期); --两日期间隔季 select da ...