1. 贪婪大陆

    难度等级 ★★

    时间限制 1000 ms (1 s)

    内存限制 128 MB

    测试数据 10 简单对比

    输入文件:greedisland.in 输出文件:greedisland.out 简单对比

    时间限制:1 s 内存限制:128 MB

    试题四:贪婪大陆

    【题目描述】

    面对蚂蚁们的疯狂进攻,小FF的Tower defense宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾。现在,小FF的后方是一望无际的大海,前方是变异了的超级蚂蚁。 小FF还有大好前程,他可不想命丧于此, 于是他派遣手下最后一批改造SCV布置地雷以阻挡蚂蚁们的进攻。

    小FF最后一道防线是一条长度为N的战壕, 小FF拥有无数多种地雷,而SCV每次可以在[ L , R ]区间埋放同一种不同于之前已经埋放的地雷。 由于情况已经十万火急,小FF在某些时候可能会询问你在[ L’ , R’] 区间内有多少种不同的地雷, 他希望你能尽快的给予答复。

    【输入格式】

    第一行为两个整数n和m; n表示防线长度, m表示SCV布雷次数及小FF询问的次数总和。

    接下来有m行, 每行三个整数Q,L , R; 若Q=1 则表示SCV在[ L , R ]这段区间布上一种地雷, 若Q=2则表示小FF询问当前[ L , R ]区间总共有多少种地雷。

    【输出格式】

    对于小FF的每次询问,输出一个答案(单独一行),表示当前区间地雷总数。

    【输入样例】

    5 4

    1 1 3

    2 2 5

    1 2 4

    2 3 5

    【输出样例】

    1

    2

    【数据范围】

    对于30%的数据: 0<=n, m<=1000;

    对于100%的数据: 0<=n, m<=10^5.
/*
一开始一直在想区间的计算.
然后脑洞不会.
看了看题解.
从反方面想.
树状数组维护的是端点的出现次数.
对于[l,r]的贡献.
只需要求出[1,l-1]中当过右端点的点的次数,
[r+1,n]中当过左端点的点的次数,
然后用询问次数减去即可.
*/
#include<iostream>
#include<cstdio>
#define MAXN 100001
using namespace std;
int n,m,tot,sl[MAXN],sr[MAXN];
int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
return x*f;
}
int lowbit(int t){
return t&-t;
}
void addl(int x,int data){
while(x<=n){
sl[x]+=data;
x+=lowbit(x);
}
}
void addr(int x,int data){
while(x<=n){
sr[x]+=data;
x+=lowbit(x);
}
}
int queryl(int x){
int ans=0;
while(x){
ans+=sl[x];
x-=lowbit(x);
}
return ans;
}
int queryr(int x){
int ans=0;
while(x){
ans+=sr[x];
x-=lowbit(x);
}
return ans;
}
int main(){
freopen("greedisland.in","r",stdin);
freopen("greedisland.out","w",stdout);
int x,y,z;
n=read();m=read();
for(int i=1;i<=m;i++){
z=read();x=read();y=read();
if(z==1) addl(x,1),addr(y,1),tot++;
else {
printf("%d\n",tot-(queryl(n)-queryl(y))-queryr(x-1));
}
}
return 0;
}

Cogs 1008. 贪婪大陆(树状数组)的更多相关文章

  1. COGS1008. 贪婪大陆[树状数组 模型转换]

    1008. 贪婪大陆 ★★   输入文件:greedisland.in   输出文件:greedisland.out   简单对比时间限制:1 s   内存限制:128 MB 试题四:贪婪大陆  [题 ...

  2. [luogu P2184] 贪婪大陆 [树状数组][线段树]

    题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁. 小 ...

  3. P2184 贪婪大陆 树状数组

    树状数组帅炸了....又被一道水题轻虐,又被学长指出了一个错误....我太菜了QAQ 开两个树状数组,一个记录左端点,一个记录右端点: 共有cnt(总数) - (<l的右端点数目) - (> ...

  4. cogs——1008. 贪婪大陆(清华巨佬代码)——树状数组

    1008. 贪婪大陆 ★★   输入文件:greedisland.in   输出文件:greedisland.out   简单对比时间限制:1 s   内存限制:128 MB 试题四:贪婪大陆  [题 ...

  5. cogs 1008 贪婪大陆

    /* 不要思维定视 盯着线段树维护l r 的ans不放 显然没法区间合并 换一种思路 如果打暴力的话 O(nm) 每次询问 扫一遍之前所有的修改 有交点则说明种数++ 接下来考虑如何优化 我们把每个区 ...

  6. COGS.1822.[AHOI2013]作业(莫队 树状数组/分块)

    题目链接: COGS.BZOJ3236 Upd: 树状数组实现的是单点加 区间求和,采用值域分块可以\(O(1)\)修改\(O(sqrt(n))\)查询.同BZOJ3809. 莫队为\(O(n^{1. ...

  7. luoguP2184 贪婪大陆 题解(树状数组)

    P2184 贪婪大陆  题目 其实很容易理解就是询问一段区间内有多少段不同的区间 然后再仔细思索一下会发现: 1.只要一个区间的开头在一个节点i的左边,那么这个区间包含在区间1~i中. 2.只要一个区 ...

  8. [luoguP2184] 贪婪大陆(树状数组)

    传送门 用两个树状数组,cr 维护 1....x 中 r 的数量 cl 维护 1....x 中 l 的数量 求答案的时候只需要求 y 前面 被作为左端点 的个数 - x 前面 被作为右端点的个数 —— ...

  9. 【BZOJ 1901】Zju2112 Dynamic Rankings &&【COGS 257】动态排名系统 树状数组套线段树

    外面是树状数组,里面是动态开点线段树,对于查询我们先把有关点找出来,然后一起在线段树上行走,这样就是单个O(log2)的了 #include <cstdio> #include <v ...

随机推荐

  1. NDK编译路径问题

    有点偷懒,在一个使用了jni工程里面稍微修改一下,编译另外一个jni工程. 代码写完后,Android.mk等文件也写好,但是ndk-build的时候提示Android NDK:Your APP_BU ...

  2. A Tour of Go Pointers

    Go has pointers, but no pointer arithmetic. Struct fields can be accessed through a struct pointer. ...

  3. iOS Xcode的快捷键

    将一些搜集和经常使用的快捷键记录下来,方便你我. Command +1~ 8: 跳转到导航区的不同位置 Command +0 :显示/隐藏导航区 Command Alt 1~ 6:在不同检测器之间跳转 ...

  4. UVa465 - Overflow

    题目地址:点击打开链接 C++代码: #include <cstdlib> #include <cstdio> int main() { char s1[10000],s2[1 ...

  5. 标准I/O库之格式化I/O

    本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 一.格式化输出 执行格式化输出处理的是4个pr ...

  6. Xcode 4-PBXcp error修复-No such file or directory

    Xcode 4-PBXcp error修复-No such file or directory (2013-05-02 15:20:50) 转载▼ 标签: apple iphone ios 移动开发 ...

  7. IIS8无法调用Oracle.DataAccess .dll问题

    之前在.net平台下操作Oracle都是用的oracle.dataaccell.dll引用,但是服务器升级为II8后,发布的新服务有关Oracle数据库部分都无法运行,调试了好久发现是IIS8不支持低 ...

  8. Java为什么会超时

     java程序,最终是转成c运行的,我们写的程序会转成c代码,并且由底层的c程序调用,可以理解成我们程序最后变成被调用的c函数  底层的C程序是java虚拟机,由它读取我们的.class文件,翻译成c ...

  9. yum在线升级

    RPM优点 由於 RPM 是透过预先编译并打包成为 RPM 文件格式后,再加以安装的一种方式,并且还能够进行数据库的记载. 所以 RPM 有以下的优点: RPM 内含已经编译过的程序与配置档等数据,可 ...

  10. 玩转ButterKnife注入框架

    在去年这个时候,我写过一篇介绍Android注解的文章android注解使用详解,这篇文章主要是介绍了Android中的AndroidAnnotations注入框架,AA框架有它自身的一些优点,这里不 ...