博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
九度OJ 1088:剩下的树 (线段树)
阅读量:4206 次
发布时间:2019-05-26

本文共 1609 字,大约阅读时间需要 5 分钟。

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5791

解决:2649

题目描述:

    有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。

    现在要移走一些树,移走的树的区间用一对数字表示,如 100 200表示移走从100到200之间(包括端点)所有的树。
    可能有M(1<=M<=100)个区间,区间之间可能有重叠。现在要求移走所有区间的树之后剩下的树的个数。

输入:

    两个整数L(1<=L<=10000)和M(1<=M<=100)。

    接下来有M组整数,每组有一对数字。

输出:

    可能有多组输入数据,对于每组输入数据,输出一个数,表示移走所有区间的树之后剩下的树的个数。

样例输入:
500 3100 200150 300470 471
样例输出:
298
来源:

思路:

我写代码1的时候还不知道线段树的概念,用了一种比较笨的方法,每次对区间内所有数赋值操作。这个题时间复杂度要求不高,能通过。

后来学了一下线段树,用线段树实现的,见代码2。很奇怪的是线段树的时间复杂度并没有显著改善

代码1:

#include 
#include
#define N 10000 int main(void){ int L, M; int moved[N+1]; int i, j; int begin, end; while (scanf("%d%d", &L, &M) != EOF) { memset(moved, 0, (N+1)*sizeof(int)); for (i=0; i

代码2:

#include 
#include
#define N 10001 int seg[4*N]; void pushdown(int i){ if (seg[i] != -1) { seg[2*i] = seg[i]; seg[2*i+1] = seg[i]; seg[i] = -1; }} void update(int k, int i, int b, int e, int l, int r){ if (b > r || e < l) return; if (l <= b && e <= r) { seg[i] = k; return; } pushdown(i); update(k, 2*i, b, (b+e)/2, l, r); update(k, 2*i+1, (b+e)/2+1, e, l, r);} int getsum(int i, int b, int e){ if (seg[i] == -1) return getsum(2*i, b, (b+e)/2) + getsum(2*i+1, (b+e)/2+1, e); if (seg[i] == 1) return e-b+1; else return 0;} int main(void){ int n, i, m; int l, r; while (scanf("%d%d", &n, &m) != EOF) { for (i=0; i<4*N; i++) seg[i] = -1; update(1, 1, 0, n, 0, n); for (i=0; i

转载地址:http://wfeli.baihongyu.com/

你可能感兴趣的文章
CSS之Flexbox制作CSS布局易如反掌
查看>>
纯CSS实现锚点跳转位置上下偏移的办法
查看>>
CSS之flex需要知道的一切(一)
查看>>
CSS之flex需要知道的一切(二)
查看>>
CSS之Multi-columns的column-gap和column-rule
查看>>
CSS之Multi-columns的跨列
查看>>
CSS之浮动(一)
查看>>
CSS之浮动(二)
查看>>
记腾讯互娱网站布局(1)
查看>>
记腾讯互娱网站布局(2)
查看>>
记腾讯互娱网站布局(3)
查看>>
大小不固定的图片和多行文字的垂直水平居中
查看>>
display:table-cell的集中应用
查看>>
display:table-cell自适应布局下连续单词字符换行
查看>>
css行高line-height的一些深入理解及应用
查看>>
我对CSS vertical-align的一些理解与认识(一)
查看>>
我对CSS vertical-align的一些理解与认识(二)
查看>>
CSS中height:100%和height:inherit的异同
查看>>
absolute元素在text-align属性下的对齐显示
查看>>
技术管理规划-设定团队的职能
查看>>