郭大侠与甲铁城

全世界被产业革命的波澜推动,自近世变迁至近代之时,不死的怪物突然出现。被钢铁的皮膜包覆,只要心脏不被破坏就不会消灭,被它啃咬的人似乎也会在死过一次之后复生,并开始袭击人类。之后被称为卡巴内的这些怪物爆发性地增殖,并覆盖了全世界。
远东岛国日本的人们,为了对抗卡巴内的威胁而在各地建造名为“驿”的城寨,并困守在其中,想方设法残存下去。能够在驿之间来往的只有装甲蒸汽机车(通称骏城),驿之间通过各自生产物的融通,总算是保证了生活。
住在以炼铁和蒸汽机的生产为业的显金驿的蒸汽锻冶少年,郭大侠。他为了打倒卡巴内,开发出独自的武器“贯筒”,同时期盼着有朝一日能够发挥出自己的力量。
某天,穿越前线的骏城之一甲铁城来到了显金驿。为了车辆的清扫整备而被召唤的郭大侠,目击到了从义务性的卡巴内检阅中被免除的不可思议少女。
当晚,郭大侠与自称为无名的那位白天的少女再会,此时骏城突然暴走并突入了显金驿。乘务员全灭,而且全部变成了卡巴内!
卡巴内从显金驿中溢出。如同要从被恐慌袭击的人浪中逆行一般,郭大侠奔跑着。这一次不能逃避,我要用贯筒打倒卡巴内!
——于是,为了成为真正能闪耀光辉的男人,郭大侠的战斗开始了。
……
现在在这个城市中有n个卡巴内,每个卡巴内都有他自身的属性a[i],郭大侠的贯筒能够一次性击穿[L,R]区间中拥有不同属性的怪物!
为了足够强的发挥自己的武器的实力,郭大侠必须提前知道自己的一次性贯筒能够击杀多少只怪物。
现在开始计算吧!
Input

第一行给你n,q,表示有n个卡巴内,q次询问
第二行有n个整数,表示每一个卡巴内的属性a[i]
接下来q行,每行两个整数Li,Ri,表示询问。
1<=n,q<=100000
1<=Li<=Ri<=n
1<=a[i]<=10000

Output

对于每一个询问,输出答案!

样例输入1:

5 3
1 2 3 1 1
1 3
1 4
3 5

样例输出1:

3
3
2

题解:莫队算法,分块暴力求解。。。不是很懂常数为什么这么优秀。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<queue>
#define LiangJiaJun main
#define LL long long
#define pa pair<int,int>
using namespace std;
int n,Q,block,belong[100004];
int temp[100004];
struct data{int l,r,ans,sit;
}q[100004];
int a[100004];
inline bool dex(data x,data y){return (belong[x.l]==belong[y.l])?(x.r<y.r):(belong[x.l]<belong[y.l]);
}
inline bool cmp(data x,data y){return x.sit<y.sit;}
void solve(){int l=0,r=0,ans=0;for(int i=1;i<=Q;i++){while(r<q[i].r){r++;if(!temp[a[r]])++ans;temp[a[r]]++;}while(l>q[i].l){l--;if(!temp[a[l]])++ans;temp[a[l]]++;}while(r>q[i].r){if(temp[a[r]]==1)--ans;temp[a[r]]--;r--;}while(l<q[i].l){if(temp[a[l]]==1)--ans;temp[a[l]]--;l++;}q[i].ans=ans;}
}
int LiangJiaJun(){scanf("%d%d",&n,&Q);block = (int)sqrt((double)n);for(int i=1;i<=n;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++)belong[i] = (i-1)/block + 1;for(int i=1;i<=Q;i++){scanf("%d%d",&q[i].l,&q[i].r);q[i].sit = i;}sort(q+1,q+Q+1,dex);solve();sort(q+1,q+Q+1,cmp);for(int i=1;i<=Q;i++)printf("%d\n",q[i].ans);return 0;
}

[UESTC 1342]郭大侠与甲铁城相关推荐

  1. cdoj 1342 郭大侠与甲铁城 树状数组+离线

    郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  2. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  3. cdoj1342郭大侠与甲铁城

    地址:http://acm.uestc.edu.cn/#/problem/show/1342 题目: 郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     ...

  4. 【UESTC 1334 郭大侠与Rabi-Ribi】+ 贪心 + 优先队列

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit ...

  5. UESTC 1339 郭大侠与线上游戏

    题目地址  http://acm.uestc.edu.cn/#/problem/show/1339 这道题,是求中位数,以前也有一道中位数的题目卡的我要死,这次这道题我依旧没有办法自己做出来,找了题解 ...

  6. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi 优先队列

    J - 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...

  7. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

    J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...

  8. 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化

    F - 郭大侠与"有何贵干?" 就是给一个三维空间,和N个长方体,问覆盖K次的体积 x和y都是1e9,但是z是[1,3],所以可以把这个分为两个二维平面,求被覆盖K次的面积,最后加 ...

  9. cdoj1338郭大侠与英雄学院

    地址:http://acm.uestc.edu.cn/#/problem/show/1338 思路: 郭大侠与英雄学院 Time Limit: 6000/2000MS (Java/Others)    ...

最新文章

  1. [密码学] RSA同模攻击与选择密文攻击
  2. vbsedit无法创建空文档_创建恢复驱动器(U盘)
  3. JS中基本数据类型和引用类型最根本的区别
  4. boost::graph::distributed::mpi_process_groupboost::graph::用法的测试程序
  5. SQL Server 2008 R2 中不能删除复制(replication) 的解决方法
  6. 期货黄金与现货黄金比较
  7. 2013年测试基于Web的Spring应用程序(第1部分)
  8. 服务器重启后发现docker-compose的nginx重启失败: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: addres
  9. JAVA分布式篇1——Linux
  10. 葡萄酒java_基于jsp的红酒网站-JavaEE实现红酒网站 - java项目源码
  11. Python 小入坑
  12. [转载] Python基于机器学习方法实现的电影推荐系统
  13. 使用Opencv分离图像通道/合并图像通道
  14. Problem:服务器超过最大中终连接数
  15. 【方向盘】Spring Boot 2.5.0正式发布,环境变量可指定前缀的功能很赞
  16. 文献综述_软件单元测试
  17. android删除cache文件夹,Android开发之删除项目缓存的方法
  18. html absolute溢出,position:absolute用法(隐藏溢出部分)
  19. 层次高的人,都拥有成长型思维
  20. 用jQuery提取到input中value值 checked选择器

热门文章

  1. 【转】计算机科学经典之作。。。
  2. 如何构建研发质量管理体系?
  3. 对于app触控屏幕触发音效的延迟与杂音测试
  4. 企业微信发送应用消息php,企业微信如何发送应用消息?及时发布重要通知
  5. 如何避免Kafka的重复消费
  6. Android studio 出现Error:failed to find Build Tools revision 28.0.0 rc1解决方案
  7. Stop:c000021a蓝屏解决方法
  8. carplay是否可以用安卓系统_carplay安卓能用吗
  9. python练习-字符串加密解密
  10. quagga 的原理解析 zebra原理解析