题目链接

  • 时间限制: 1 s
  • 空间限制: 128000 KB
  • 题目等级 : 大师 Master

题目描述 Description

简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量

数据已重新装配,不会出现OLE错误

时限和数据范围适当修改,避免数据包过大而浪费空间资源

输入描述 Input Description

第1行共包括2个正整数,分别为N,M。

接下来m行每行两个正整数L,R

输出描述 Output Description

一共输出M行,每行输出切完之后剩下水果数量

样例输入 Sample Input

10 3
3 5
2 8
1 5

样例输出 Sample Output

7
3
2

数据范围及提示 Data Size & Hint

30% 的数据满足N,M<=5000

60% 的数据满足N,M<=100000

100% 的数据满足1<=L<=R<=N<=500000,1<=M<=500000

线段树实现。

#include <cstdio>
using namespace std;
struct node_type
{
int l, r, lc, rc, sum; // l: 左区间, r: 右区间, lc: 左子树, rc: 右子树, sum: 该树有几个水果未删除。
bool del; //删除标记
};
node_type node[1000010];
int tot = 0, root, n, m;
void update(int now) //更新 now 节点的 sum 值
{
node[now].sum = node[node[now].rc].sum + node[node[now].lc].sum;
}
int make_tree(int l, int r) //建树
{
int now = ++tot;
node[now].l = l;
node[now].r = r;
node[now].del = false;
if (l == r)
{
node[now].lc = node[now].rc = 0;
node[now].sum = 1;
return now;
}
int mid = (l + r) / 2;
node[now].lc = make_tree(l, mid);
node[now].rc = make_tree(mid + 1, r);
update(now);
return now;
}
void cut_fruit(int l, int r, int now) //切水果(删除 [l, r] )
{
if (node[now].del)
return;
if (l <= node[now].l && node[now].r <= r)
{
node[now].del = true;
node[now].sum = 0;
return;
}
int mid = (node[now].l + node[now].r) / 2;
if (l <= mid && node[now].lc)
cut_fruit(l, r, node[now].lc);
if (r > mid && node[now].rc)
cut_fruit(l, r, node[now].rc);
update(now);
}
int main()
{
scanf("%d%d", &n, &m);
int l, r;
root = make_tree(1, n);
node[0].sum = 0;
for (int i = 0; i < m; ++i)
{
scanf("%d%d", &l, &r);
cut_fruit(l, r, root);
printf("%d\n", node[root].sum);
}
return 0;
}

Codevs 1299 切水果的更多相关文章

  1. codevs 1299 切水果 线段树

    1299 切水果  时间限制: 1 s  空间限制: 128000 KB     题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果 ...

  2. Codevs 1299 切水果 水一发

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的 ...

  3. codevs 1299 线段树 区间更新查询

    1299 切水果  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解  查看运行结果     题目描述 Description 简单的说,一共N个水果排成 ...

  4. 基于HTML5和JS实现的切水果游戏

    切水果游戏曾经是一款风靡手机的休闲游戏,今天要介绍的就是一款网页版的切水果游戏, 由JavaSript和HTML5实现,虽然功能和原版的相差太大,但是基本的功能还是具备了,还是模仿的挺逼真,有一定的J ...

  5. Android破解学习之路(三)——Android游戏 切水果破解

    经过前两篇破解教程,想必大家也是明白了破解的简单流程了. 先对APP进行试用,了解APP运行的大概流程,之后从APP中找出关键字(一般的关键字差不多都是支付失败),之后使用Androidkiller进 ...

  6. Unity3D笔记 切水果三 切水果

    一.创建一个Apple00,拖拽Prfabs下的Sprite命名为Apple00,添加碰撞器Box Collider,编写代码Knife Rey1.js 二.做被切的苹果 步骤和一是一样的,但是被切的 ...

  7. 【CodeVS】p1299 切水果

    题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和 ...

  8. Codevs1299 切水果

    题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和 ...

  9. CodeVs——T 3305 水果姐逛水果街Ⅱ

    http://codevs.cn/problem/3305/  时间限制: 2 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 De ...

随机推荐

  1. java代码获知该方法被哪个类、哪个方法、在哪一行调用

    public class TestMain { public static void main(String[] args){ hello(); } public static void hello( ...

  2. 请将 php.ini 中的 short_open_tag 设置为 On,否则无法继续安装。

    安装的wamp套件,访问http://localhost/Discuz/install/index.PHP进行安装操作,提示 对不起,请将 php.ini 中的 short_open_tag 设置为 ...

  3. NoSQL-Redis【1】-控制台配置密码

    1.设置密码为123456 CONFIG SET requirepass 123456 2.验证密码 AUTH 123456 3.redis-cli连接 @ECHO OFF redis-cli.exe ...

  4. Codeforces 687C The Values You Can Make(DP)

    题目大概说给n个各有价值的硬币,要从它们中选出若干个组合成面值k,而要求的是各个方案里这些选出的硬币能组合出来的面值有哪些. 有点绕.. dp[i][j][k]表示前i个硬币中 能否 组合成面值j且选 ...

  5. POJ2472106 miles to Chicago

    106 miles to Chicago Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3931   Accepted: 1 ...

  6. 【原】iOS多线程之异步任务+并行队列情况与异步任务+串行队列(主队列)情况

    异步任务+并行队列 把异步任务放到并行队列进行执行,异步任务会在不同的线程中执行. /*异步执行+并行队列*/ - (IBAction)clickBasic1:(UIButton *)sender { ...

  7. [R语言]forecast.Arima中使用xreg报错

    问题: 使用forecast.Arima对带xreg的arima模型进行预测,报xreg Error pre.m4x <- forecast.Arima(m4x, h = 20, xreg = ...

  8. ubifs总体设计分析

    1.     设计需求 flash设备区别与一般的块设备,有如下特点: 存在坏块 使用寿命较短 存储介质不稳定 读写速度慢 不支持随机访问(nand) 只能通过擦除将0改成1 最小读写单位为page ...

  9. 【BZOJ】3675: [Apio2014]序列分割

    http://www.lydsy.com/JudgeOnline/problem.php?id=3675 题意:给一个n个数字的序列,每一次分割的贡献是$sum(left, mid)*sum(mid+ ...

  10. Servlet处理get请求时的中文乱码问题

    我们都知道,使用Servlet处理get请求时,如果get请求的参数中有中文,直接接收会是乱码,这个时候我们使用类似下面的语句来处理乱码: 12345 String name = request.ge ...