解法一:

a[i]表示以 i作为起点,对 i-n的气球全部上色的次数 
对(start,end)区间上色
++a[start]
--a[end+1]抵消掉 end+1-n的部分
问题转换为求 a的前缀和

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+6;
int n,a[maxn];
int main()
{while(scanf("%d",&n)&&n){memset(a,0,sizeof(a));for(int i=1;i<=n;i++){int l,r;scanf("%d%d",&l,&r);++a[l];--a[r+1];        }for(int i=1;i<=n+1;i++)printf("%d:%d\n",i,a[i]); printf("%d",a[1]);for(int i=2;i<=n;i++){a[i]+=a[i-1];printf(" %d",a[i]);}printf("\n");}  return 0;
}

解法二:

树状数组

#include<bits/stdc++.h>
using namespace std;
int N,c[100005];
int lowbit(int i)
{return i&(-i);}
void add(int i,int value)
{while(i<=N){c[i]+=value;i+=lowbit(i);}
}
int sum(int i){int sum=0;while(i>0){sum+=c[i];i-=lowbit(i);}return sum;
}
int main()
{while(scanf("%d",&N)!=EOF&&N){int a,b;memset(c,0,sizeof(c));for(int i=1;i<=N;i++){scanf("%d%d",&a,&b);add(a,1);add(b+1,-1);}for(int i=1;i<N;i++)printf("%d ",sum(i));printf("%d\n",sum(N));}return 0;   }

解法三:

线段树

更新区间,查询点

#include<stdio.h>
#include<string.h>#define lson l ,mid ,t << 1
#define rson mid + 1 ,r ,t << 1 | 1__int64 sum[440000] ,mark[440000];void Pushup(int t)
{sum[t] = sum[t<<1] + sum[t<<1|1];
}void Pushdown(int t ,int ll)
{if(mark[t]){mark[t<<1] += mark[t];mark[t<<1|1] += mark[t];sum[t<<1] += (ll - (ll >> 1)) * mark[t];sum[t<<1|1] += (ll >> 1) * mark[t];mark[t] = 0;}
}void BuidTree()
{memset(sum ,0 ,sizeof(sum));memset(mark ,0 ,sizeof(mark));
}void Update(int l ,int r ,int t ,int a ,int b ,int c)
{if(a <= l && b >= r){sum[t] += (r - l + 1) * c;mark[t] += c;return;}Pushdown(t ,r - l + 1);int mid = (l + r) >> 1;if(a <= mid) Update(lson ,a ,b ,c);if(b > mid)  Update(rson ,a ,b ,c);Pushup(t);
}__int64 Query(int l ,int r ,int t ,int a ,int b)
{if(a <= l && b >= r)return sum[t];Pushdown(t ,r - l + 1);int mid = (l + r) >> 1;__int64 ans = 0;if(a <= mid) ans = Query(lson ,a ,b);if(b > mid) ans += Query(rson ,a ,b);return ans;
}int main ()
{int n ,a ,b ,i;while(~scanf("%d" ,&n) && n){BuidTree();for(i = 1 ;i <= n ;i ++){scanf("%d %d" ,&a ,&b);Update(1 ,n ,1 ,a ,b ,1);}for(i = 1 ;i <= n ;i ++)if(i == n) printf("%I64d\n" ,Query(1 ,n ,1 ,i ,i));else printf("%I64d " ,Query(1 ,n ,1 ,i ,i));}return 0;
}

HDU 1556 前缀和 树状数组 线段树相关推荐

  1. D-query SPOJ - DQUERY(求区间不同数的个数)(树状数组||线段树+离散)(主席树+在线)

    English Vietnamese Given a sequence of n numbers a1, a2, -, an and a number of d-queries. A d-query ...

  2. P2357 守墓人(树状数组/线段树)

    题目描述 在一个荒凉的墓地上 有一个令人尊敬的守墓人, 他看守的墓地从来 没有被盗过, 所以人们很放心的把自己的先人的墓 安顿在他那 守墓人能看好这片墓地是必然而不是偶然..... 因为....守墓人 ...

  3. E. Tyler and Strings(组合计数 + 树状数组/线段树)(带重复元素的全排列)

    题目链接 主要思路还是比较好想的,一些细节公式预处理比较难搞- 参考题解 分析 从前往后遍历,如果s[]剩下的数中,s[i] < t[i]则对答案是有贡献的: 贡献就是后面位置[i+1 ~ n] ...

  4. NKOJ 2182 (HEOI 2012) 采花(树状数组/线段树)

    P2182[河北OI 2012 DAY1]采花 问题描述 萧芸斓是Z 国的公主,平时的一大爱好是采花. 今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花.花园足够大,容纳 了n 朵花,花有c ...

  5. jzoj3854-分组【树状数组,线段树】

    正题 题目链接:https://jzoj.net/senior/#contest/show/2990/2 题目大意 一个小队满足要求 队长的地位最高 所有队员和队长的年龄差不超过kkk 给出nnn个人 ...

  6. 模板三连击:树状数组+线段树+主席树

    没事儿干,复习模板...... 1.树状数组 本来不想写这个的,但是反正就几分钟就打完了,所以就写了,水AC数. 洛谷 P3374 [模板]树状数组 1 1 #include<cstdio> ...

  7. 51nod 1680区间求和 (dp+树状数组/线段树)

    不妨考虑已知一个区间[l,r]的k=1.k=2....k=r-l+1这些数的答案ans(只是这一个区间,不包含子区间) 那么如果加入一个新的数字a[i](i = r+1) 则新区间[l, i]的答案为 ...

  8. CCF201709-5 除法(100分)【树状数组+线段树】

    试题编号: 201709-5 试题名称: 除法 时间限制: 10.0s 内存限制: 256.0MB 问题描述: 问题描述 小葱喜欢除法,所以他给了你N个数a1, a2, ⋯, aN,并且希望你执行M次 ...

  9. POJ2182 HDU2711 Lost Cows【树状数组+线段树】

    Lost Cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 17113 Accepted: 10664 Descripti ...

最新文章

  1. 大厂技术文档:Redis+Nginx+Spring全家桶+Dubbo精选
  2. Linux学习之系统编程篇:IPC 和管道的基本概念及管道的创建
  3. ProtoBuff3.0.0在Ubuntu上安装
  4. php 公钥格式转换,如何把OpenSSH公钥转换成OpenSSL格式
  5. qt 获取本机的wifi密码_还在记密码?这款开源免费的账号密码管理神器赶紧收了...
  6. 多线程编程 RW_LOCK 读写锁
  7. 莫烦python简历_Matplotlib画图教程
  8. 《团队-爬取豆瓣电影TOP250-设计文档》
  9. C#调用非托管Dll
  10. java list filter_Java8使用stream().filter()过滤List对象(查找符合条件的对象集合)
  11. java手机翻译,使用JUniversal翻译Android项目
  12. Python实现网段固定端口扫描
  13. linux 自动执行脚本
  14. cesium 经纬度绘制点_Cesium搜索经纬度并标点
  15. 第三次科技革命(一)
  16. 【功能测试】part1
  17. 串口协议发送数据格式详细分析
  18. This Product is covered by one or more of the folloWing patents
  19. c语言无法定位程序输入点 于动态链接库,无法定位程序输入点于动态链接库?解决方法步骤...
  20. windows下解决弹窗广告

热门文章

  1. Maven web项目创建
  2. java用户界面—创建一个面板
  3. 1,字符是否为空,2,比较两个字符大小。String.Compare(String, String)。string.IsNullOrEmpty(string)...
  4. 关于Log 的一些东西
  5. 快速排序算法javascript实现
  6. Implementation:Bellman-ford
  7. [SPOJ] 1043 Can you answer these queries I [GSS1]
  8. SharePoint Calendar Webparts
  9. android 首选项框架,Android:创建自定义首选项
  10. android builder模式 插件,如何在Kotlin中实现Builder模式?