洛谷 1972 莫队算法


传送门


其实这道题的标答应该是树状数组或者线段树吧,,,如果我没记错的话曾经是做过类似题目的,,,
然而,,然而,,

好吧开始正题,这道题目我选择的是莫队算法,引用一下某大犇的话

暴力出奇迹,对拍保平安

先来讨论一下莫队算法的适用条件:

  • 莫队算法是离线算法
  • 莫队算法解决区间不修改的查询问题
  • 当已知[l,r]的值是,能在较短的时间内求出[l+1, r]或[l,r+1]的值

莫队算法的核心思想其实就是通过调整暴力的顺序来优雅的暴力,首先把所有询问按照左端点排序,对n进行分块,将询问块按照l放入块中,然后对于每块按照右端点进行排序,之后暴力扫描,得解


资料
资料2


最后%%%%%%MT大牛

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>const int maxn = 50000 + 100;
const int maxm = 200000 + 200;
struct task{int l;int r;int num;
};
task p[maxm];
int ans[maxm];
int sum[1001000];
int tl, tr, tres;
int a[maxn];
int n, m;
int blocksize;
int blocknum;
bool cmp1(task aa, task bb) {return (aa.l < bb.l);
}bool cmp2(task aa, task bb) {if (aa.r == bb.r) return (aa.l < bb.l);return (aa.r < bb.r);
}
int main () {scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", &a[i]);scanf("%d", &m);for (int i = 1; i <= m; i++) {scanf("%d %d", &p[i].l, &p[i].r);p[i].num = i;}std :: sort(p + 1, p + m + 1, cmp1);blocksize = (int)sqrt(n) + 1;blocknum = n / blocksize;int b = 1;int j;for (int i = 1; i < blocknum; i++) {for (j = b; p[j].l <= i * blocksize && j <= m; j++) ;std :: sort(&p[b], &p[j], cmp2);b = j;}std :: sort(&p[b], &p[m + 1], cmp2);tl = 1, tr = 0, tres = 0;for (int i = 1; i <= m; i++) {if (p[i].l < tl) {for (int j = p[i].l ; j < tl; j++) {sum[a[j]]++;if (sum[a[j]] == 1) tres++;}} else if (p[i].l > tl) {for (int j = tl; j < p[i].l; j++) {sum[a[j]]--;if (sum[a[j]] == 0) tres--;}}tl = p[i].l;if (p[i].r > tr) {for (int j = tr + 1; j <= p[i].r; j++) {sum[a[j]]++;if (sum[a[j]] == 1) tres++;}} else if (p[i].r < tr) {for (int j = p[i].r + 1; j <= tr; j++) {sum[a[j]]--;if (sum[a[j]] == 0) tres--;}}tr = p[i].r;ans[p[i].num] = tres;}for (int i = 1; i <= m; i++) printf("%d\n", ans[i]);return 0;
}

转载于:https://www.cnblogs.com/CtsNevermore/p/6025209.html

洛谷 1972 莫队相关推荐

  1. YBTOJ洛谷P4074:糖果公园(树上莫队)

    文章目录 解析 update: 代码 所谓树上莫队,就是在树上的莫队 (逃) 传送门 解析 似乎就是树上的这道题 考虑如何转化为序列问题呢? 考虑dfs序 但是又一个问题... 似乎这条链的dfs序不 ...

  2. 洛谷 - P3246 [HNOI2016]序列(莫队+单调栈)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,再给出 mmm 次询问,每次询问需要回答一个区间 [l,r][l,r][l,r] 内所有子区间的最小值之和 题目分析:因为可以离线,所以考 ...

  3. 洛谷P3245 [HNOI2016]大数 【莫队】

    题目 题解 除了\(5\)和\(2\) 后缀数字对\(P\)取模意义下,两个位置相减如果为\(0\),那么对应子串即为\(P\)的倍数 只用对区间种相同数个数\(x\)贡献\({x \choose 2 ...

  4. 洛谷1903 带修莫队

    /*洛谷1903*/ #include<cstdio> #include<algorithm> #include<iostream> #include<cma ...

  5. 洛谷P5071 [YNOI2015]此时此刻的光辉 莫队+玄学优化+卡常QWQ

    题目链接:传送门 在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此 ...

  6. 洛谷P5072 [YNOI2015]盼君勿忘 莫队+unordered_set+毒瘤卡常

    在太阳西斜的这个世界里,置身天上之森.等这场战争结束之后,不归之人与望眼欲穿的众人, 人人本着正义之名,长存不灭的过去.逐渐消逝的未来.我回来了,纵使日薄西山,即便看不到未来,此时此刻的光辉,盼君勿忘 ...

  7. #莫队,分块#codevs 6555 洛谷 1494 jzoj 1902 小Z的袜子

    题目 有多大的概率抽到两只颜色相同的袜子 分析 首先答案=相同袜子的数量/Cnn−1C_n^{n-1}Cnn−1​ 但是纯暴力是会超时的,怎么办呢,用莫队+分块愉快地解决问题,注意特判和最简 代码 # ...

  8. 洛谷2336 BZOJ2754 SCOI2012 喵星球上的点名 SA 莫队 二分

    题目链接 题意: 有nnn个人,每个人有两个串,一个表示姓,一个表示名,这里用数字表示字符.有mmm次询问,对于每次询问,你要回答有多少个人的姓或者名至少有一个是给出的串的子串.最后再对于这nnn个人 ...

  9. 洛谷 P2056 采花 - 莫队算法

    萧芸斓是 Z国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳了 n 朵花,花有 c 种颜色(用整数 1-c 表示) ,且花是排成一排的,以 ...

最新文章

  1. STM32串口第一个字节丢失问题的分析过程
  2. Sql Server中两个表之间数据备份和导入
  3. mysql中备份和导出的区别_mysql的备份和导出
  4. 鸿蒙系统gpl,华为鸿蒙最大的对手现身!谷歌正式推送Fuchsia OS,或替代安卓
  5. 设计友好的错误信息页面
  6. 【CASS精品教程】CASS9.1土方量的计算方法汇总
  7. 工作325:uni-日期小于10补0
  8. 快速上手Linux核心命令(四):文件内容相关命令
  9. Project Server 2003配置部署指南_百度文库
  10. python io密集 多线程_python多进程和多线程究竟谁更快(详解)
  11. hibernate 的session一级缓存
  12. 关于打印出来的字符串,最后的逗号改为句号的解决办法
  13. 一分钟了解”matlab对数函数log“
  14. MySQL-python安装遇到的各种问题
  15. JAVA NIO:NIO与OIO的对比以及Channel通道、Selector选择器、Buffer缓冲区的介绍 高并发
  16. 17 年微软老兵,非典型跨领域 AI 科研之路
  17. 吃货联盟订餐系统项目
  18. 基于JAVA博物馆交流平台计算机毕业设计源码+系统+lw文档+部署
  19. 计算机直接切换到桌面,屏幕如何快速切换桌面
  20. php ean13,php生成EAN

热门文章

  1. android常犯错误记录(一)
  2. 如何实现红帽企业虚拟化管理平台Host主机所在数据中心的切换
  3. 【转】struct epoll_event
  4. proc文件系统面面谈(转贴)
  5. python 格式化工具_推荐一个小而美的 Python 格式化工具
  6. Php global echo,php中global和$GLOBALS[]的分析之一
  7. mac下nvm_【干货分享】Mac最全用法指导,学不会学费全退!!!(反正我也没收你们学费)...
  8. 各种池化操作(包括组合池化)
  9. 老化试验机ami怎么寻找过去的数据_广东元耀:您知道塑料臭氧老化试验机检测浓度的方法有哪些吗?...
  10. oracle /etc/fonts simfang.ttf,GitHub - jiaxiaochu/font: 系统缺失字体导致无法显示中文和乱码的解决办法...