地址: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了,,不过把所有数向右移下就好了

 #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <vector>
#include <cstdlib>
#include <string>
#include <bitset> #define PI acos((double)-1)
#define E exp(double(1))
#define K 100000
using namespace std;
struct node
{
int l,r,id;
}q[K];
int c[K],a[],ans[K+],last[K+];
int n;
bool cmp(node tx,node ty)
{
if(tx.r==ty.r)
return tx.l<ty.l;
return tx.r<ty.r;
}
void add(int x,int v)
{
while(x<=n)
{
c[x]+=v;
x+=x&(-x);
}
}
int sum(int x)
{
int ret=;
while(x>)
{
ret+=c[x];
x-=x&(-x);
}
return ret;
}
int main(void)
{
int m,t=;
cin>>n>>m;
memset(q,,sizeof(q));
memset(last,,sizeof(last));
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
{
scanf("%d",&t);
last[i]=a[t];
a[t]=i;
}
for(int i=;i<m;i++)
scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
sort(q,q+m,cmp);
memset(c,,sizeof(c));
t=;
for(int i=;i<m;i++)
{
while(t<q[i].r)
t++,add(last[t]+,),add(t+,-);
ans[q[i].id]=sum(q[i].l);
}
for(int i=;i<m;i++)
printf("%d\n",ans[i]);
return ;
}

cdoj1342郭大侠与甲铁城的更多相关文章

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

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

  2. cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构

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

  3. cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构

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

  4. CDOJ 1284 苦恼的郭大侠 map启发式合并

    苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...

  5. cdoj1339郭大侠与线上游戏

    地址:http://acm.uestc.edu.cn/#/problem/show/1339 题目: 郭大侠与线上游戏 Time Limit: 6000/2000MS (Java/Others)    ...

  6. cdoj1338郭大侠与英雄学院

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

  7. cdoj1337郭大侠与阴阳家

    地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others)     ...

  8. cdoj1334郭大侠与Rabi-Ribi

    地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...

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

    最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在地上跑来跑去,好萌好萌呀~ 这个游戏是这样玩的,郭大侠作为一个主角,拿着一个小锤子,他的 ...

随机推荐

  1. Spring MVC第一课:用IDEA构建一个基于Spring MVC, Hibernate, My SQL的Maven项目

    作为一个Spring MVC新手最基本的功夫就是学会如何使用开发工具创建一个完整的Spring MVC项目,本文站在一个新手的角度讲述如何一步一步创建一个基于Spring MVC, Hibernate ...

  2. .htaccess伪静态实例分享

    首先配置服务器启动重写模块打开 Apache 的配置文件 httpd.conf .将#LoadModule rewrite_module modules/mod_rewrite前面的#去掉.保存后重启 ...

  3. css3 html5画心

    以下内容不是原创 我是搬运工 1. <!DOCTYPE HTML><html> <head> <meta charset="UTF-8"/ ...

  4. linux机器之间配置ssh无密访问

    首先确认已安装了ssh服务,没装的自行百度一下. A机器:192.168.1.1 B机器:192.168.1.2 使A无密访问B,步骤如下[root@localhost ~]# cd .ssh 如果没 ...

  5. CGContextRef用法

    本文转载至 http://blog.csdn.net/perfect_promise/article/details/7660220 quartz 是主要的描画接口,支持基于路径的描画. 抗锯齿渲染. ...

  6. python 之 多进程

    阅读目录 1. Process 2. Lock 3. Semaphore 4. Event 5. Queue 6. Pipe 7. Pool 序. multiprocessingpython中的多线程 ...

  7. delphi连接sql server数据库,并根据sql语句查询出数据显示--初级

    需要用到四个组件,分别为: 1.ADOConnection1 设置Connectionstring属性(连接串),loginPrompt属性控制是否连接记住了密码: 2.ADOQuery1 设置Con ...

  8. JavaScript进阶之路 初学者的开始

    一:写在前面的问题和话 一个javascript初学者的进阶之路! 背景:3年后端(ASP.NET)工作经验,javascript水平一般般,前端水平一般般.学习资料:犀牛书. 如有误导,或者错误的地 ...

  9. 【BZOJ4380】[POI2015]Myjnie 区间DP

    [BZOJ4380][POI2015]Myjnie Description 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i].有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[ ...

  10. 【BZOJ2090/2089】[Poi2010]Monotonicity 2 动态规划+线段树

    [BZOJ2090/2089][Poi2010]Monotonicity Description 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k].选出一个长度 ...