【BZOJ2422】Times 树状数组
【BZOJ2422】Times
Description
Input
Output
m行,即对于小y提出的每个问题的答案。
Sample Input
2 5
0 10
5 8
0 6
8 2
Sample Output
2
【数据范围】
1<=n,m<=200000
1<=x,y,a,b<=maxlongint
题解:这题的思路还是比较好的。
正着做比较难,考虑反着做。我们可以统计在那段时间内它没有看到过多少个单位,则要么b<x<y要么x<y<a,并且这两种情况不会重复计算,用树状数组统计一下就好了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long ll;
const int maxn=200010;
int n,m,nm,tot;
int x[maxn],y[maxn],l[maxn],r[maxn];
struct BIT
{
int s[maxn<<2];
inline void updata(int x)
{
for(int i=x;i<=nm;i+=i&-i) s[i]++;
}
inline int query(int x)
{
int i,ret=0;
for(i=x;i;i-=i&-i) ret+=s[i];
return ret;
}
}s1,s2;
struct node
{
int org,k;
ll val;
}p[maxn<<2];
bool cmp(const node &a,const node &b)
{
return a.val<b.val;
}
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-')f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+gc-'0',gc=getchar();
return ret*f;
}
int main()
{
n=rd(),m=rd();
int i;
for(i=1;i<=n;i++) p[++tot].val=rd(),p[tot+1].val=p[tot].val+rd()-1,p[tot].org=p[tot+1].org=i,p[++tot].k=1;
for(i=1;i<=m;i++) p[++tot].val=rd(),p[tot+1].val=p[tot].val+rd()-1,p[tot].org=p[tot+1].org=i,p[tot].k=2,p[++tot].k=3;
sort(p+1,p+tot+1,cmp);
p[0].val=-1;
for(i=1;i<=tot;i++)
{
if(p[i].val>p[i-1].val) nm++;
switch(p[i].k)
{
case 0:x[p[i].org]=nm; break;
case 1:y[p[i].org]=nm; break;
case 2:l[p[i].org]=nm; break;
case 3:r[p[i].org]=nm; break;
}
}
for(i=1;i<=n;i++) s1.updata(y[i]),s2.updata(x[i]);
for(i=1;i<=m;i++) printf("%d\n",n-(s1.query(l[i]-1)+s2.query(nm)-s2.query(r[i])));
return 0;
}
【BZOJ2422】Times 树状数组的更多相关文章
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- apache几种限制ip的方法
参考文档来源: http://jingyan.baidu.com/article/4b07be3c193d1648b380f3a9.html1. 禁止访问某些文件/目录增加Files选项来控制,比 ...
- squid 三种代理实验
squid 软件既可以做代理,也可以做实现缓存加速,大大降低服务器的I/O.. 1.其中squid代理分为三种,正向代理.透明代理.反向代理. (1)squid正向代理和squid透明代理都位客户端: ...
- Android.mk入门(一)
Android.mk是Android工程管理文件,其作用基本等同于Linux环境中的Makefile,在语法上,Android.mk和普通Makefile略有不同,主要区别是Android.mk包含一 ...
- 新人补钙系列教程之:拒绝CPU高占用
1.关于MovieClip和Sprite的鼠标事件,当不需要鼠标事件的时候将mouseEnabled和mouseChildren设为false. 不断的检测鼠标交互事件会消耗CPU,尤其是大量交互对象 ...
- 面试——String的比较总结
public class StringTest { private static String getA() {return "a";} public static void ma ...
- 2017.8.4 Creating Server TCP listening socket *:6379: bind: No such file or directory
启动redis时出现如下错误: 解决办法:按顺序输入如下命令就可以连接成功. 1. redis-cli.exe 2. shutdown 3. exit 4. redis-server.exe 参考来 ...
- Android Activity之间经典切换动画
package com.iteye.androidtoast; import java.util.ArrayList; import java.util.List; import android.ap ...
- iOS uitableivewCell 下划线顶格
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath ...
- Linux非阻塞IO(八)使用epoll重新实现非阻塞的回射服务器
本文无太多内容,主要是几个前面提到过的注意点: 一是epoll的fd需要重新装填.我们将tcp_connection_t的指针保存在数组中,所以我们以这个数组为依据,重新装填fd的监听事件. //重新 ...
- CCF计算机职业资格认证 2015年3月第2题 数字排序 解法和思路
问题描写叙述 给定n个整数,请统计出每一个整数出现的次数.按出现次数从多到少的顺序输出. 输入格式 输入的第一行包括一个整数n,表示给定数字的个数. 第二行包括n个整数.相邻的整数之间用一个空格分隔, ...