lightoj 1088【树状数组+离散化】
2024-09-04 09:27:01
题意:
给你n个数,然后给你q个区间,然后问你这n个数有多少个在这个区间上;
思路:
树状数组搞搞,但是注意到数的范围很大,所以先离散化一下。
初始化初始化!!!卧槽,wa的我好郁闷。。。
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=2e5+10; int arr[N];
int c[N*4];
int n,Q; void add(int i)
{
while(i<=n+2*Q)
{
c[i]+=1;
i+=i&(-i);
}
} int Sum(int i)
{
int ans=0;
while(i>0)
{
ans+=c[i];
i-=i&(-i);
}
return ans;
} vector<int>xs;
int main()
{
int T,cas=1;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&Q);
xs.clear();
for(int i=1;i<=n;i++)
{
scanf("%d",&arr[i]);
xs.push_back(arr[i]);
}
for(int i=1;i<=2*Q;i+=2)
{
scanf("%d%d",&arr[n+i],&arr[n+i+1]);
xs.push_back(arr[n+i]);
xs.push_back(arr[n+i+1]);
} sort(xs.begin(),xs.end()); vector<int>::iterator e=unique(xs.begin(),xs.end());
for(int i=1;i<=n+2*Q;i++)
arr[i]=lower_bound(xs.begin(),e,arr[i])-xs.begin()+1; memset(c,0,sizeof(c));
for(int i=1;i<=n;i++)
add(arr[i]);
printf("Case %d:\n",cas++);
for(int i=1;i<=2*Q;i+=2)
printf("%d\n",Sum(arr[n+i+1])-Sum(arr[n+i]-1));
}
return 0;
}
/* 10
5 3
0 0 0 0 0
1 2
1 3
1 2 */
最新文章
- js 事件大全
- IOS- 应用程序生命周期(前后台切换,应用的各种状态)详解
- JS 时间格式化
- struts2整合CKEditor和CKFinder实现上传
- 2016年6月28日 星期二 --出埃及记 Exodus 14:25
- transition:all 0.5s linear;进度条动画效果 制作原理
- careercup-数组和字符串1.7
- JavaScript上下文和闭包
- Cookie[1]
- JS进阶书籍
- Brackets - 强大免费的开源跨平台Web前端开发工具IDE (HTML/CSS/Javascript代码编辑器)
- (转)MyBatis在插入的数据有空值时,可能为空的字段都要设置jdbcType
- 爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)
- C#多线程编程(7)--锁
- c# 事件的订阅发布Demo
- Linux 学习 (三) 文件搜索命令
- mysql数据库的查询,添加,删除,还原,备份
- ubuntu 安装 firefox 的 jre plugin
- 洛谷P2542 [AHOI2005]航线规划(LCT,双连通分量,并查集)
- distinct 用法
热门文章
- JNI在C和C++中的调用区别
- 图像处理之opencv---常用函数
- Javascript MVC 学习笔记(二) 控制器和状态
- mysql 中的增改查删(CRUD)
- P1355 神秘大三角
- OBS桌面视频直播软件/推流工具使用指南
- EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端
- 5 Ways to Make Your Hive Queries Run Faster
- 一款很好的日程安排插件fullcalendar 非常适合OA等系统
- UVA11149 Power of Matrix —— 矩阵倍增、矩阵快速幂