cdoj1342郭大侠与甲铁城
地址:http://acm.uestc.edu.cn/#/problem/show/1342
题目:
郭大侠与甲铁城
Time Limit: 1500/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others)
全世界被产业革命的波澜推动,自近世变迁至近代之时,不死的怪物突然出现。被钢铁的皮膜包覆,只要心脏不被破坏就不会消灭,被它啃咬的人似乎也会在死过一次之后复生,并开始袭击人类。之后被称为卡巴内的这些怪物爆发性地增殖,并覆盖了全世界。
远东岛国日本的人们,为了对抗卡巴内的威胁而在各地建造名为“驿”的城寨,并困守在其中,想方设法残存下去。能够在驿之间来往的只有装甲蒸汽机车(通称骏城),驿之间通过各自生产物的融通,总算是保证了生活。
住在以炼铁和蒸汽机的生产为业的显金驿的蒸汽锻冶少年,郭大侠。他为了打倒卡巴内,开发出独自的武器“贯筒”,同时期盼着有朝一日能够发挥出自己的力量。
某天,穿越前线的骏城之一甲铁城来到了显金驿。为了车辆的清扫整备而被召唤的郭大侠,目击到了从义务性的卡巴内检阅中被免除的不可思议少女。
当晚,郭大侠与自称为无名的那位白天的少女再会,此时骏城突然暴走并突入了显金驿。乘务员全灭,而且全部变成了卡巴内!
卡巴内从显金驿中溢出。如同要从被恐慌袭击的人浪中逆行一般,郭大侠奔跑着。这一次不能逃避,我要用贯筒打倒卡巴内!
——于是,为了成为真正能闪耀光辉的男人,郭大侠的战斗开始了。
……
现在在这个城市中有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 |
3 |
思路:
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郭大侠与甲铁城的更多相关文章
- cdoj 1342 郭大侠与甲铁城 树状数组+离线
郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit St ...
- cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) 最近 ...
- cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构
郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Su ...
- CDOJ 1284 苦恼的郭大侠 map启发式合并
苦恼的郭大侠 题目连接: http://acm.uestc.edu.cn/#/problem/show/1284 Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行 ...
- cdoj1339郭大侠与线上游戏
地址:http://acm.uestc.edu.cn/#/problem/show/1339 题目: 郭大侠与线上游戏 Time Limit: 6000/2000MS (Java/Others) ...
- cdoj1338郭大侠与英雄学院
地址:http://acm.uestc.edu.cn/#/problem/show/1338 思路: 郭大侠与英雄学院 Time Limit: 6000/2000MS (Java/Others) ...
- cdoj1337郭大侠与阴阳家
地址:http://acm.uestc.edu.cn/#/problem/show/1337 思路: 郭大侠与阴阳家 Time Limit: 3000/4000MS (Java/Others) ...
- cdoj1334郭大侠与Rabi-Ribi
地址:http://acm.uestc.edu.cn/#/problem/show/1334 题目: 郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Other ...
- 郭大侠与Rabi-Ribi (优先队列)
最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在地上跑来跑去,好萌好萌呀~ 这个游戏是这样玩的,郭大侠作为一个主角,拿着一个小锤子,他的 ...
随机推荐
- 日期类Date
Java在日期类中封装了有关日期和时间的信息,用户可以通过调用相应的方法来获取系统时间或设置日期和时间.Date类中有很多方法在JDK1.0公布后已经过时了,在8.3中我们将介绍JDK1.0中新加的用 ...
- 获取一个Assembly中的命名空间列表
通过System.Reflection.Assembly类中提供的方法和属性不能直接获取组件中的命名空间列表.但有方法可以直接获得Assembly中的所有类型,我们便可以通过获取的类型来得到命名空间名 ...
- Linux设备驱动程序学习之分配内存
内核为设备驱动提供了一个统一的内存管理接口,所以模块无需涉及分段和分页等问题. 我已经在第一个scull模块中使用了 kmalloc 和 kfree 来分配和释放内存空间. kmalloc 函数内幕 ...
- python解释器的分类及特点
CPython 当从Python官方网站下载并安装好Python2.7后,就直接获得了一个官方版本的解释器:Cpython,这个解释器是用C语言开发的,所以叫CPython,在命名行下运行python ...
- js判断css动画效果是否结束
<!-- css样式 --> <style> .test{ width: 100px; height: 100px; transition: all 5s; backgroun ...
- 性能测试:压测中TPS上不去的几种原因分析(就是思路要说清楚)
转https://www.cnblogs.com/imyalost/p/8309468.html 先来解释下什么叫TPS: TPS(Transaction Per Second):每秒事务数,指服务器 ...
- Android 电源管理 -- wakelock机制
转载地址:http://blog.csdn.net/wh_19910525/article/details/8287202 Wake Lock是一种锁的机制, 只要有人拿着这个锁,系统就无法进入休眠, ...
- IOS控件:长度单位换算(UITextField,IBAction,委托事件touchesBegan)
#import <UIKit/UIKit.h> @interface demo7_dayViewController : UIViewController { IBOutlet UITex ...
- NATS源代码分析之auth目录
NATS是一个轻量的消息发布-订阅系统.NATS的核心是Event machine. 项目Server端源代码地址: github.com/nats-io/gnatsd 在auth目录中, multi ...
- mvc中使用uploadify批量上传的应用
网上找了很多资料都没有发现一个好用.可以用的uploadify批量上传的应用,这里通过官方和自己的一些项目需要整理了一个出来. 希望能帮助到需要的人. 效果图: