地址:http://acm.uestc.edu.cn/#/problem/show/1342

题目:

郭大侠与甲铁城

Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

Submit Status

全世界被产业革命的波澜推动,自近世变迁至近代之时,不死的怪物突然出现。被钢铁的皮膜包覆,只要心脏不被破坏就不会消灭,被它啃咬的人似乎也会在死过一次之后复生,并开始袭击人类。之后被称为卡巴内的这些怪物爆发性地增殖,并覆盖了全世界。

远东岛国日本的人们,为了对抗卡巴内的威胁而在各地建造名为“驿”的城寨,并困守在其中,想方设法残存下去。能够在驿之间来往的只有装甲蒸汽机车(通称骏城),驿之间通过各自生产物的融通,总算是保证了生活。

住在以炼铁和蒸汽机的生产为业的显金驿的蒸汽锻冶少年,郭大侠。他为了打倒卡巴内,开发出独自的武器“贯筒”,同时期盼着有朝一日能够发挥出自己的力量。

某天,穿越前线的骏城之一甲铁城来到了显金驿。为了车辆的清扫整备而被召唤的郭大侠,目击到了从义务性的卡巴内检阅中被免除的不可思议少女。

当晚,郭大侠与自称为无名的那位白天的少女再会,此时骏城突然暴走并突入了显金驿。乘务员全灭,而且全部变成了卡巴内!

卡巴内从显金驿中溢出。如同要从被恐慌袭击的人浪中逆行一般,郭大侠奔跑着。这一次不能逃避,我要用贯筒打倒卡巴内!

——于是,为了成为真正能闪耀光辉的男人,郭大侠的战斗开始了。

……

现在在这个城市中有n个卡巴内,每个卡巴内都有他自身的属性a[i],郭大侠的贯筒能够一次性击穿[L,R]区间中拥有不同属性的怪物!

为了足够强的发挥自己的武器的实力,郭大侠必须提前知道自己的一次性贯筒能够击杀多少只怪物。

现在开始计算吧!

Input

第一行给你n,q,表示有n个卡巴内,q次询问

第二行有n个整数,表示每一个卡巴内的属性a[i]

接下来q行,每行两个整数Li,Ri,表示询问。

1<=n,q<=1000001<=n,q<=100000

1<=Li<=Ri<=n1<=Li<=Ri<=n

1<=a[i]<=100001<=a[i]<=10000

Output

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

Sample input and output

Sample Input Sample Output
5 3
1 2 3 1 1
1 3
1 4
3 5
3
3
2

思路:

Ps:所有题目中搞了最久的题目。。。看了一天多,网上各种找资料。。智商-100

这题就是求区间内的不同数字的个数。

用树状数组做的,用线段树也可以就是了。用莫队也可以,不过我没搞出来,wa了几发、、

首先对所有询问按右区间排个序,然后对所有的询问从左向右扫一遍。。。。

对于每个属性都记录它上一次出现的位置,初始时默认为0,如果是第一次出现就把他加进树状数组(就是值+1),不是的话就把他从树状数组中删掉(值-1)

对于每个询问ans=sum(r)-sum(l-1),就这样把所有询问扫一遍就好了

写完后发现lowbit居然后为0,,,然后就tle了,,不过把所有数向右移下就好了

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstdio>
 4 #include <cmath>
 5 #include <cstring>
 6 #include <queue>
 7 #include <stack>
 8 #include <map>
 9 #include <set>
10 #include <vector>
11 #include <cstdlib>
12 #include <string>
13 #include <bitset>
14
15 #define PI acos((double)-1)
16 #define E exp(double(1))
17 #define K 100000
18 using namespace std;
19 struct node
20 {
21     int l,r,id;
22 }q[K];
23 int c[K],a[10009],ans[K+10],last[K+10];
24 int n;
25 bool cmp(node tx,node ty)
26 {
27     if(tx.r==ty.r)
28         return tx.l<ty.l;
29     return tx.r<ty.r;
30 }
31 void add(int x,int v)
32 {
33     while(x<=n)
34     {
35         c[x]+=v;
36         x+=x&(-x);
37     }
38 }
39 int sum(int x)
40 {
41     int ret=0;
42     while(x>0)
43     {
44         ret+=c[x];
45         x-=x&(-x);
46     }
47     return ret;
48 }
49 int main(void)
50 {
51     int m,t=0;
52     cin>>n>>m;
53     memset(q,0,sizeof(q));
54     memset(last,0,sizeof(last));
55     memset(a,0,sizeof(a));
56     for(int i=1;i<=n;i++)
57         {
58             scanf("%d",&t);
59             last[i]=a[t];
60             a[t]=i;
61         }
62     for(int i=0;i<m;i++)
63         scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
64     sort(q,q+m,cmp);
65     memset(c,0,sizeof(c));
66     t=0;
67     for(int i=0;i<m;i++)
68     {
69         while(t<q[i].r)
70                 t++,add(last[t]+1,1),add(t+1,-1);
71         ans[q[i].id]=sum(q[i].l);
72     }
73     for(int i=0;i<m;i++)
74         printf("%d\n",ans[i]);
75     return 0;
76 }

View Code

转载于:https://www.cnblogs.com/weeping/p/5456142.html

cdoj1342郭大侠与甲铁城相关推荐

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

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

  2. [UESTC 1342]郭大侠与甲铁城

    郭大侠与甲铁城 全世界被产业革命的波澜推动,自近世变迁至近代之时,不死的怪物突然出现.被钢铁的皮膜包覆,只要心脏不被破坏就不会消灭,被它啃咬的人似乎也会在死过一次之后复生,并开始袭击人类.之后被称为卡 ...

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

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

  4. 分享个甲铁城手游的辅助脚本,能够自动刷副本刷资源

    分享个甲铁城手游的辅助脚本,能够自动刷副本刷资源 甲铁城的卡巴内瑞-这个手游中伙伴穿戴装备以及升星培养(升星只需消耗伙伴碎片)能增加人偶的属性与被动技能效果.伙伴的品质越高能为玩家增加的战斗力也就越多 ...

  5. cdoj1338郭大侠与英雄学院

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

  6. [UESTC1284] 郭大侠的苦恼

    Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行廖的叮嘱,摆出了阵型,准备带着部队与天行廖相逢于雷霆崖. 但郭大侠实在是没有把握,这个阵型是真的如天行廖所言,所向 ...

  7. 郭大侠与Rabi-Ribi(优先队列)

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

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

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

  9. 【CDOJ 1334】 郭大侠与Rabi-Ribi

    http://acm.uestc.edu.cn/#/problem/show/1334 最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在 ...

最新文章

  1. 找出netstat -tan命令的结果中以'LISTEN'后跟0、1或多个空白字符结尾的行
  2. [PAL编程规范]SAP HANA PAL双变量几何回归预测分析Bi -Variate Geometric Regression编程规范FORECASTWITHGEOR(预测)...
  3. 内地计算机学校,全球大学计算机实力排名:清北人工智能内地前2
  4. expdp\impdp及exp\imp
  5. python知识:numpy.geomspace()
  6. Java迭代器中的next()方法
  7. Vue.use()是什么?
  8. [SpringSecurity]基本原理_过滤器加载过程
  9. python网络编程项目_python网络编程(1):客户端与网络编程简介
  10. 荣耀20青春版能升鸿蒙吗,荣耀20青春版上手 配置跑分如何
  11. python让词向量一直在内存里_python读取大文件踩过的坑——读取txt文件词向量
  12. matlab共享变量,matlab如何编写共享参数拟合程序 - 程序语言 - 小木虫 - 学术 科研 互动社区...
  13. 去掉windows10“更新并关机”
  14. volley 框架简易封装使用
  15. 虚拟主机隐藏index.html,Nginx如何隐藏index.html
  16. 思科命令大全_【汇总】思科网络设备产品型号大全!超全解释~
  17. 谈谈js中的异步编程。
  18. 微信点餐系统中出现的小问题记录
  19. Redis Eviction policies (驱逐策略)
  20. 千氪公开课 | 自媒体下半场,如何把握区块链写作的红利?

热门文章

  1. 面向对象(OOP)基本概念
  2. OpenCV人脸识别之三:识别自己的脸
  3. android倒计时动画特效,Android仿活动时分秒倒计时效果
  4. 安卓怎么把一个按钮设计成梯形_电气控制电路与PLC之间的梯形图转化,挺实用!...
  5. python datetime to timestamp_python timestamp和datetime之间转换详解
  6. java3d曲面图开发_web三维图表的开发
  7. 项目服务器admin,django-admin创建项目与manage服务器的运行
  8. php千封邮件怎么快速发送,如何在PHP中无限制地发送数千封电子邮件?
  9. android 访问服务器sql_一次服务器被传webshell事件溯源
  10. 包装类、正则表达式、自动拆装箱基本知识总结