HDU1556(树状数组)
Color the ball
Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 17044 Accepted Submission(s): 8513
Problem Description
Input
当N = 0,输入结束。
Output
Sample Input
Sample Output
树状数组入门,区间更新,单点查询
//2016.8.10
//树状数组,区间更新,单点查询
#include<iostream>
#include<cstdio>
#include<cstring> using namespace std; int arr[], n;//arr[i]表示i管辖的范围内数字之和 int lowbit(int x){return x&(-x);} int add(int pos, int tt)
{
for(int i = pos; i <= n; i+=lowbit(i))
arr[i] += tt;
return ;
} int query(int pos)
{
int sum = ;
for(int i = pos; i > ; i-=lowbit(i))
sum+=arr[i];
return sum;
} int main()
{
int a, b;
while(cin>>n)
{
memset(arr, , sizeof(arr));
for(int i = ; i < n; i++)
{
scanf("%d%d", &a, &b);
add(a, );
add(b+, -);
}
for(int i = ; i <= n; i++)
if(i == n)
cout<<query(i)<<endl;
else cout<<query(i)<<" ";
} return ;
}
// 2018-03-28
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n;
while(cin.hasNext()) {
n = cin.nextInt();
if(n == 0)break;
BinaryIndexedTrees bit = new BinaryIndexedTrees(n);
int l, r;
for(int i = 0; i < n; i++) {
l = cin.nextInt();
r = cin.nextInt();
bit.updata(l, r, 1);
}
for(int i = 1; i <= n; i++) {
if(i == n)System.out.printf("%d \n", bit.query(i));
else System.out.printf("%d ", bit.query(i));
}
}
}
}
class BinaryIndexedTrees {
/*
* 区间更新,单点查询
*/
int n;
int [] e;
BinaryIndexedTrees(int _n) {
this.n = _n;
e = new int[n+1];
}
// x+lowbit(x)表示到达x的父节点
// x-lowbit(x)表示到达x点管辖区间的下个区间的管辖点
int lowbit(int x) {
return x&(-x);
}
void add(int pos, int val) {
for(int i = pos; i <= n; i+=lowbit(i))
e[i] += val;
}
int query(int pos) {
int sum = 0;
for(int i = pos; i > 0; i-=lowbit(i))
sum += e[i];
return sum;
}
// 给[l, r]区间内的每个数加上val
void updata(int l, int r, int val) {
add(l, val);
add(r+1, -val);
}
}
HDU1556(树状数组)的更多相关文章
- hdu1556 树状数组区间更新单点查询板子
就是裸的区间更新: 相对于直观的线段树的区间更新,树状数组的区间更新原理不太相同:由于数组中的一个结点控制的是一块区间,当遇到更新[l,r]时,先将所有能控制到 l 的结点给更新了,这样一来就是一下子 ...
- Color the ball(HDU1556)树状数组
每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...
- hdu1556树状数组的区间更新单点查询
Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- ZZNU 2098 Drink coffee(差分+树状数组)
题目链接:http://acm.hi-54.com/problem.php?pid=2098 2098 : Drink coffee 时间限制:1 Sec 内存限制:256 MiB 提交:32 答案正 ...
- bryce1010专题训练——树状数组
Bryce1010模板 1.一维树状数组 https://vjudge.net/contest/239647#problem/A[HDU1556] #include<bits/stdc++.h& ...
- 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 ...
随机推荐
- Ketama Consisent Hash
问题描述 有一些目标节点 v1, v2...vn 需要一个算法,能够将任意key映射到目标节点中的一个vx 评价方式 1. 对于一个比较大的key集合,分布在各个目标节点的key的数量要尽可能均匀 2 ...
- Struts2的整体回顾(Action, 拦截器, 值栈, OGNL表示式, ModelDriven)
ValueStack里有map(request, session, attr, parameters)和对象栈. Map调用的方法: ActionContext.getContext().put(k, ...
- Openlayers修改矢量要素
将以下代码放到demo下examples中即可运行 <!DOCTYPE html><html> <head> <meta http-equiv="C ...
- (简单) POJ 1195 Mobile phones,二维树状数组。
Description Suppose that the fourth generation mobile phone base stations in the Tampere area operat ...
- Delphi2010生成GB2312字库乱码问题
用Delphi2010做一个点阵字库软件,字库生成部分是从一个用Delphi2007做旧的程序里扣出来的.点阵字库软件完成后生成GB2312字库在LED控制卡上显示为乱码.知道Delphi版本高于20 ...
- 【转】iOS开发路线简述
简单看了下楼主说的很详细,尤其是最后面那个图描述很直观,让想学习ISO开发的程序猿很清晰每个步骤学习的内容,在此收藏下. iOS系统以及iPhone的出来都要感谢乔布斯,一个完美主义者,从如此优秀的i ...
- 【spoj7528】 Lexicographical Substring Search
http://www.spoj.com/problems/SUBLEX/ (题目链接) 题意 给出一个字符串,询问其中字典序第K小的子串. Solution 后缀自动机例题. 构出后缀自动机以后,对每 ...
- linux 指令 备注
ss命令可用于查看系统的socket的状态.基本上ss是比较符合需求的ss -a 出来的答案比较完整,但是很乱...连dgram及stream都分开了ss -l 比较可能是需要的,这会列出所有正在使用 ...
- OI队内测试——石门一
T1: 题目大意: 给你一个立方体,每个面上有些数字,给你一个数字K,你可以玩K轮游戏, 每轮你会将每个面上的数均分为4份,分给相邻的面,求K轮游戏后,上面的数字是 依次给你前.后.上.下.左.右的起 ...
- sql语句:创建事物
BEGIN TRAN Tran_Money --开始事务 DECLARE @tran_error int; ; BEGIN TRY WHERE Name = '刘备'; SET @tran_error ...