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 ... 
随机推荐
- 【python】一个备份把文件备份到邮箱的python实现
			公司服务器弄了跳板机,从服务器上拉文件变得好麻烦,弄了个脚本从服务器上向邮箱发送文件,还蛮方便哈- #!/usr/bin/env python2.7 #! coding:UTF-8 import sm ... 
- springMVC入门配置及helloworld实例
			1. 新建web project 2. 往lib里copy必须的jar 3. 改写web.xml <?xml version="1.0" encoding="UTF ... 
- [iOS] 响应式编程开发-ReactiveCocoa(二)
			RAC实现图片下载功能 在实现异步RAC下载图片的过程中,需要注意以下几点: • 通过 NSURLConnection 对象的 +(RACSignal *)rac_sendAsynchronousRe ... 
- 170113、CentOs6.4中安装和配置vsftp简明教程
			一.vsftp安装篇 代码如下: # 安装vsftpdyum -y install vsftpd# 启动service vsftpd start# 开启启动chkconfig vsftpd on 二. ... 
- 13、手把手教你Extjs5(十三)模块字段和Grid列的定义[1]
			这一节加入模块自定义字段,并根据这些字段生成model.然后再定义grid中的分组和列.从这一切开始真正进入到了模块自定义的节奏当中,代码的复杂度和技巧性也大大提高.先从模块字段的自定义开始.先看一下 ... 
- STM32音乐播放器,文件查找的实现
			使用FATFS只是完成了一个基本的文件读写,有时候我们需要扩展一些功能,比如MP3实验,需要上一曲下一曲的切换,扩展的代码如下 //显示目录下所有文件 u8 ShowFileList(u8* dirP ... 
- UIAlertController 自定义输入框及KVO监听
			UIAlertController极大的灵活性意味着您不必拘泥于内置样式.以前我们只能在默认视图.文本框视图.密码框视图.登录和密码输入框视图中选择,现在我们可以向对话框中添加任意数目的UITextF ... 
- 转:HTTPS 升级指南
			上一篇文章我介绍了 HTTP/2 协议 ,它只有在 HTTPS 环境才会生效. 为了升级到 HTTP/2 协议,必须先启用 HTTPS.如果你不了解 HTTPS 协议(学名 TLS 协议),可以参考我 ... 
- IOS中单例NSUserDefaults的使用(转)
			一.了解NSUserDefaults以及它可以直接存储的类型 http://my.oschina.net/u/1245365/blog/294449 NSUserDefaults是一个单例,在整个程序 ... 
- 转载自前端开发:CSS设置滚动条样式
			浏览器默认的滚动条样子太过屌丝了,得自己动手整整.记得IE浏览器有几个设置滚条的样式,不过比较鸡肋,只能设置颜色之类的,而且webkit下面也不支持.无意间看到网易邮箱的滚动条样子很好看,一开始以为是 ... 
