时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Ho在玩一款类似俄罗斯方块的游戏。与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方向。

XXXXXX  <- 长度为6的横向长条。

第i个长条的最左端的格子坐标是Li,最右端的格子坐标是Ri;长条从很高的位置下落,中途遇到地面或者受到之前长条支撑,就会停在当前高度。

你能计算出每个长条最后停留的高度是多少吗? 直接停在地面上的长条高度视为1。

例如5个长条依次下落的位置是[10, 15], [7, 12], [12, 19], [1, 4], [1, 7],则每个长条最终停留的位置如下图所示:

5555555    33333333
222222
4444 111111

输入

第一行包含一个整数N。

以下N行每行包含两个整数Li, Ri。

对于30%的数据,1 ≤ N ≤ 1000, 1 ≤ Li ≤ Ri ≤ 1000

对于100%的数据, 1 ≤ N ≤ 100000, 1 ≤ Li ≤ Ri ≤ 100000

输出

输出N行,每行包含一個整数,代表第i个长条停留的高度。

样例输入
5
10 15
7 12
12 19
1 4
1 7
样例输出
1
2
3
1
3
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
int N,L,R,x,y,z;
struct Segment_Tree{
int maxx;
int tag;
}T[maxn<<];
void upd(int L,int R,int root){
if(x>R||y<L)return;
if(x<=L&&y>=R){ T[root].maxx=z; T[root].tag=z;return;}
int mid=(L+R)>>;
if(T[root].tag) T[root<<].maxx=T[root<<|].maxx=T[root<<].tag=T[root<<|].tag=T[root].tag,T[root].tag=;
upd(L,mid,root<<);
upd(mid+,R,root<<|);
T[root].maxx=max(T[root<<].maxx,T[root<<|].maxx);
}
int query(int L,int R,int root){
if(x>R||y<L) return ;
if(x<=L&&y>=R) return T[root].maxx;
int mid=(L+R)>>;
if(T[root].tag) T[root<<].maxx=T[root<<|].maxx=T[root<<].tag=T[root<<|].tag=T[root].tag,T[root].tag=;
return max(query(L,mid,root<<),query(mid+,R,root<<|));
}
int main(){
scanf("%d",&N);
for(int i=;i<=N;i++){
scanf("%d%d",&x,&y);
int temp=query(,,);
z=temp+;
printf("%d\n",z);
upd(,,);
}
return ;
}

HihoCoder1665方块游戏([Offer收割]编程练习赛40)(线段树)的更多相关文章

  1. [Offer收割]编程练习赛40

    不到一个小时AK,虽然是VP的,舒服,第一次.都简单的一比,没什么可说的. 查找三阶幻方 #pragma comment(linker, "/STACK:102400000,10240000 ...

  2. HihoCoder1664 01间隔方阵([Offer收割]编程练习赛40)(DP)

    给定一个NxM的01矩阵,小Hi希望从中找到一个01间隔的子方阵,并且方阵的边长越大越好. 例如对于 0100100 1000101 0101010 1010101 0101010 在右下角有一个4x ...

  3. HihoCoder1663双阶乘的末尾数字([Offer收割]编程练习赛40)(暴力||数学)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定正整数x和k,判断是否存在正整数1 ≤ y ≤ x使得x与y同奇偶且(x!!)/(y!!)的个位数字为k. 其中x!! ...

  4. Hihocoder1662 : 查找三阶幻方([Offer收割]编程练习赛40)(暴力)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个N x M的矩阵,请你数一数其中有多少个3 x 3的子矩阵可以构成三阶幻方? 如果3 x 3的矩阵中每一行.每一列 ...

  5. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  6. hihocoder [Offer收割]编程练习赛61

    [Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素, ...

  7. [Offer收割]编程练习赛46

    [Offer收割]编程练习赛46赛后题解 A.AEIOU 分析

  8. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  9. HihoCoder1654: XY游戏([Offer收割]编程练习赛39)(好久没写搜索)(已经超级简短了)

    描述 如下图所示,在4x4的棋盘上有X和Y两种棋子各若干枚:O表示空格. OXXY YOOX XOOY XOXX 小Hi每次可以选择任意一枚棋子,将它移动到上下左右相邻的空格中. 小Hi想知道最少移动 ...

随机推荐

  1. postman是如何使用的?

    1.地址:https://segmentfault.com/a/1190000005055899

  2. jQuery Easy UI Draggable(拖动)组件

    上文已经提到过了 jQuery EasyUI插件引用一般我们经常使用的有两种方式(排除easyload载入方式),所以本篇要总结的Draggable组件相同有两种方式载入: (1).使用class载入 ...

  3. 【原创】Hibernate自动生成(1)

    本实战是博主初次学习Java,分析WCP源码时,学习HibernateTools部分的实战,由于初次接触,难免错误,仅供参考,希望批评指正. 开发环境: Eclipse Version: Photon ...

  4. 摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群

    from https://my.oschina.net/ososchina/blog/856678     摘要: CentOS 6.5搭建Redis3.2.8伪分布式集群 前言 最近在服务器上搭建了 ...

  5. hdu 2108 Shape of HDU【判断多边形是否是凸多边形模板】

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=2108 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  6. React-Native在gitHub下载的Demo不能运行问题!!!

    1.目前找到的最可行的运行React-Native Demo的解决方案 请参考:http://blog.csdn.net/shubinniu/article/details/52873250 2.检查 ...

  7. 【译】常见 Java 异常解释(恶搞版)

    常见 Java 异常解释:(译者注:非技术角度分析.阅读有风险,理解需谨慎o(╯□╰)o) java.lang ArithmeticException 你正在试图使用电脑解决一个自己解决不了的数学问题 ...

  8. struts自定义拦截器实现

    示例 添加新功能:只有是登录的状态访问hello_loginSuccess才会显示登录成功. index.jsp登录成功页面 test.jsp登录页面 一.修改原代码实现 1.登录后将登录信息添加到S ...

  9. Unity 武器拖尾效果

    Pocket RPG Weapon Trails 武器拖尾效果 Asset Store地址:https://www.assetstore.unity3d.com/en/#!/content/2458 ...

  10. linux c编程:进程控制(四)进程调度

    当系统中有多个进程到时候,哪个进程先执行,哪个进程后执行是由进程的优先级决定的.进程的优先级是由nice值决定的.nice值越小,优先级越高.可以看做越友好那么调度优先级越低.进程可以通过nice函数 ...