Codevs1299 切水果

题目描述 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<=5,000

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

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

线段树基本操作练习。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #define ls l,mid,rt<<1
 6 #define rs mid+1,r,rt<<1|1
 7 using namespace std;
 8 const int mxn=800000;
 9 struct node{
10     int sum;
11     bool dec;
12 }t[mxn*4];
13 int n,m;
14 void Build(int l,int r,int rt){//建树
15     if(l==r){t[rt].sum=1;return;}
16     int mid=(l+r)>>1;
17     Build(ls);Build(rs);
18     t[rt].sum=t[rt<<1].sum+t[rt<<1|1].sum;
19     return;
20 }
21 void cut(int L,int R,int l,int r,int rt){//区间清零
22     if(t[rt].dec){
23 //        t[rt].dec=0;//这步加上话会WA,有些奇怪
24         t[rt].sum=0;
25         t[rt<<1].dec=t[rt<<1|1].dec=1;
26         return;
27     }
28     if(L<=l && r<=R){
29         t[rt].sum=0;t[rt].dec=1;return;
30     }
31     int mid=(l+r)>>1;
32     if(L<=mid)cut(L,R,ls);
33     if(R>mid)cut(L,R,rs);
34     t[rt].sum=t[rt<<1].sum+t[rt<<1 |1].sum;
35     return;
36 }
37 int main(){
38     scanf("%d%d",&n,&m);
39     int i,j;
40     Build(1,n,1);
41     int x,y;
42     for(i=1;i<=m;i++){
43         scanf("%d%d",&x,&y);
44         cut(x,y,1,n,1);
45         printf("%d\n",t[1].sum);
46     }
47     return 0;
48 }
时间: 2024-10-15 07:01:51

Codevs1299 切水果的相关文章

codevs 1299 切水果 线段树

1299 切水果 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源 输入描述 Input Description 第1行共包括2个正整数,分别为N,M. 接下来m行每行两个正整数L,R 输出描述 Output Description 一共输出M行,每

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

切水果游戏曾经是一款风靡手机的休闲游戏,今天要介绍的就是一款网页版的切水果游戏, 由JavaSript和HTML5实现,虽然功能和原版的相差太大,但是基本的功能还是具备了,还是模仿的挺逼真,有一定的JavaSript水平的朋友,可以看看源代码,相信你的JavaSript水平会有很大的提升. /** * this file was compiled by jsbuild 0.9.6 * @date Fri, 20 Jul 2012 16:21:18 UTC * @author dron * @si

使用NGUI模仿制作“切水果”

只做学习之用,无任何商业元素 如有侵权,即删除 首先,载入NGUI包,完成后如下图所示: 新建一个Sprite 然后,设置UIRoot 注意:图中画圈的部分--Scaling Style设置为"Fixed Size On Mobiles"顾名思义,整个画面开启UI整体缩放支持(在手机中) 调整Main Camera的监控范围,使得和UIRoot下的Camera同样大小. 开始新建图集(Fruit) 将图片选中,所有图片就会出现在以后View Sprites下,如图 然后在刚才新建立的S

Unity知识三:两种方式实现切水果的刀痕

Unity作为游戏开发平台之一,还是有很多实用的小技巧的,今天来学习一下怎样用两种方式来显示切水果游戏中的刀痕: 1.正常显示下的刀痕: 什么叫正常显示下的呢?我们所接触过的切水果游戏一般都是2D游戏,那我们知道,2D游戏可以用Unity直接来做,还可以使用NGUI.UGUI或者其他方法通过UI来实现. 所以我们第一种方法就是不借助UI来做. 首先来看看我们刀痕的素材:(需要的同学可以右键另存.^_^) 打开Unity: 新建一个空游戏体,命名为"BackGround",然后在组件面板

HTML日记——试着解剖HTML5版切水果小游戏(1)

2018.1.11 实践是最好的老师,在学习阶段通过分析一部成型的作品来了解一门语言的运作方式不失为理解这门语言的一种方法. 这里我们选择分析HTML5版的切水果游戏来进一步了解HTML5和JavaScript. 先看html文件的代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="description" content=&q

【CodeVS】p1299 切水果

题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源 输入描述 Input Description 第1行共包括2个正整数,分别为N,M. 接下来m行每行两个正整数L,R 输出描述 Output Description 一共输出M行,每行输出切完之后剩下水果数量 样例输入 Sample Input 10

Codevs 1299 切水果 水一发

时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 简单的说,一共N个水果排成一排,切M次,每次切[L,R]区间的所有水果(可能有的水果被重复切),每切完一次输出剩下水果数量 数据已重新装配,不会出现OLE错误 时限和数据范围适当修改,避免数据包过大而浪费空间资源 输入描述 Input Description 第1行共包括2个正整数,分别为N,M. 接下来m行每行两个正整数L,R 输出描述 Output Description

切水果

1 using UnityEngine; 2 using System.Collections; 3 4 public class EndLevelScript : MonoBehaviour { 5 6 void Start () { 7 8 } 9 10 void Update () { 11 12 } 13 } EndLevelScript 1 using UnityEngine; 2 using System.Collections; 3 4 public class FruitDisp

切水果项目总结

2/3D游戏:2D 辅助插件:NGUI 游戏制作难度系数:初级 用到的其他工具:Trail Renderer(拖尾组件) 1.NGUI使背景图片适应任何分辨率 void Start() { UIRoot root = GameObject.FindObjectOfType<UIRoot>(); if (root != null) { float s = (float)root.activeHeight / Screen.height; int height = Mathf.CeilToInt(