思路:
记录每栋楼楼顶与原点连线的斜率 那么一栋楼可见当且仅当前面所有楼的斜率都小于这栋楼
将n栋楼分为√(0.5*n*logn)块 每一块内维护一个单调上升子序列(注意不是LCS) 比如说4 1 2 3 5 那么维护的序列就是4 5
修改的时候块内暴力重建 然后查询顺着块撸一遍 每次记录当前的最大值 然后去下一个块中二分找到第一个比这个最大值大的值 然后统计答案&&更新最大值
from popoqqq

//By SiriusRen
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=100050,Block=500;
int n,m,block[N],rec[N],xx,yy;
double a[N],stk[222][555];
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=100000;i++)block[i]=(i-1)/Block+1;while(m--){scanf("%d%d",&xx,&yy);double temp=1.0*yy/xx,now=0;a[xx]=temp,rec[block[xx]]=0;for(int i=lower_bound(block+1,block+100001,block[xx])-block;block[i]==block[xx];i++)if(a[i]>now)now=a[i],stk[block[xx]][++rec[block[xx]]]=a[i];int ans=0,T;now=0;for(int i=1;i<=block[n];i++){int l=0,r=rec[i];while(l<=r){int mid=(l+r)>>1;if(stk[i][mid]<=now)l=mid+1;else r=mid-1;}ans+=rec[i]-l+1,now=max(stk[i][rec[i]],now);}printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/SiriusRen/p/6532019.html

BZOJ 2957 分块相关推荐

  1. BZOJ 2957楼房重建

    传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...

  2. 【BZOJ—2957楼房重建】【连载:请在T台上微笑】

    长久没有发博文了...对对对, 所以最近就趁着暑假多发发吧 颓废是革命的本钱: 推荐一个我喜欢的新连载漫画吧[请在T台上微笑] BZOJ 2957 [楼房重建] Description 小A的楼房外有 ...

  3. BZOJ 2957 楼房重建 (分块)

    题解:分块,然后暴力维护每一块上升序列,注意是不是最长上升序列,二分查找第二块中大于第一块的最后一个上升序列中的数. 注意:每一块的大小不要用√n会T掉的,把块的大小设为500-600都可以(T了一页 ...

  4. BZOJ 4241 分块

    思路: 考虑分块 f[i][j]表示从第i块开头到j的最大值 cnt[i][j]表示从第i块开始到序列末尾j出现了多少次 边角余料处理一下就好啦~ //By SiriusRen #include &l ...

  5. [BZOJ 2957]楼房重建(THU2013集训)(线段树维护单调栈)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2957 分析: 根据题意,就是比较斜率大小 只看一段区间的话,那么这段区间能看见的楼房数量就是这 ...

  6. bzoj 2957: 楼房重建(线段树+递归)

    2957: 楼房重建 Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 2778  Solved: 1314 [Submit][Status][Disc ...

  7. BZOJ 2957: 楼房重建

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  8. [BZOJ 2957]楼房重建(线段树)

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  9. BZOJ 2957 楼房重建-线段树

    这个题最主要的是解决一个统计答案的问题. 首先我们注意到,只要考虑右区间的答案统计就好了. 记左区间的最大值为K,当前右区间为P. 我们把当前右区间又分成两个子区间,s1,s2. 那么如果s1的最大值 ...

  10. bzoj 2957 楼房重建

    http://www.elijahqi.win/archives/3479 Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经 ...

最新文章

  1. HDU 2564 词组缩写
  2. 30分钟正则表达式入门。
  3. 全视曲面屏设计,三星S8又一次走在了行业创新的最前沿
  4. Django从理论到实战(part14)--url反转
  5. android xml怎么建立,androidXmlSerializer创建XML文件
  6. 机器人驾驶的神经网络愿景(上)
  7. 使用Qunit对JavaScript进行单元测试
  8. phpboot使用mysql_PHP MySQL 插入数据
  9. CodeWithMosh--mysql 学习笔记(2)
  10. 「JavaScript面向对象编程指南」闭包
  11. FPGA芯片行业科普
  12. 大创人人有,我怎么才能拿到国家级?
  13. wordpress原生html5播放器,让WordPress自带html5播放器-视频播放器调用代码详解,支持ios...
  14. nginx配置https阿里云免费ssl
  15. MOSFET管基本原理与应用
  16. linux wall命令_如何在Linux上使用wall命令
  17. MTTF、MTBF与MTRF
  18. Hbuilder x css样式编写无提醒
  19. 频域特征-Fbank
  20. Python培训:python中写文件的操作方法

热门文章

  1. mysql存储数据到cephfs_1.4 cephfs挂载
  2. lbs的核心技术都有哪些?_直击现场 | 腾讯云“揭秘智慧出行核心技术与创新实践”活动完美落幕!...
  3. open函数返回-1_牛逼!Python函数和文件操作(长文系列第3篇)
  4. 区块链学习路线图 初阶+中阶+高阶
  5. 英语 没有听懂对方说什么 怎么说
  6. 区块链 以太坊 全局变量 msg包括哪些字段
  7. ubuntu docker-compose: command not found
  8. [thinkphp] page类整合bootstrap分页样式
  9. 遍历数组的两种for循环方式以及一种Arrays方式
  10. 8路抢答器c语言程序,多路抢答器c程序(原创)