题目大意:给你若干个线段,按层次叠放,求全放好之后有多少线段可以露出来。

都说是线段树,可为啥我怎么看怎么是浮水捏?

PS:这个,本人交了 n 次,全超时/WA。。。。。。最后还是看别人的代码之后才改对的。。。。

这里先介绍一下浮水法

首先,联想一下,这无数条线段是竖直方向罗列的,也就是这样:

然后,将最下面的那个向上挪,挪到一定程度显然会遇到阻拦,然后,将他被阻拦的部分剪去。

这样一来,最后,这条线段如果浮到了最上面,也就是上面那一堆都没有挡住它,就将颜色记录上(此处记录的长度,我也不知道单纯 inc 一开始为什么过不去。。。⊙﹏⊙b汗)

所以,在这个基础上,再加个离散化,OK。。。。

额,其实离散化没那么恐怖,就是让每一个坐标都对应一个数值,可能你不知不觉中已经用过了。。。。

代码 SueMiller

program ACRush;
var ans,x,y:array[0..10001]of longint;
n:longint;
i,j,k,ca,cas,sum:longint;

procedure cover(l,r,k,c:longint);
begin
while ((k<n) and ((r<x[k]) or (l>y[k]))) do
inc(k);    //挡不住的,跳过,反正它也影响不了什么。。。不然超时。
if k>=n then begin
inc(ans[c],r-l+1);
exit;
end;

if l<x[k] then begin
cover(l,x[k]-1,k+1,c);
l:=x[k];
end;
if r>y[k] then begin
cover(y[k]+1,r,k+1,c);
r:=y[k];
end;   //剪啊剪
end;

begin
readln(cas);
for ca:=1 to cas do
begin
sum:=0;
fillchar(ans,sizeof(ans),0);
readln(n);
for i:=0 to n-1 do
readln(x[i],y[i]);

for i:=n-1 downto 0 do
begin
cover(x[i],y[i],i+1,i);
end;

for i:=0 to n-1 do
begin
if ans[i]>0 then inc(sum);
end;

writeln(sum);
end;
end.

转载于:https://www.cnblogs.com/SueMiller/archive/2011/12/27/2303640.html

解题报告 poj 2528 (罕见的浮水法解这个题的。。。。。。)相关推荐

  1. poj解题报告——poj 1528 Perfection

    原题入口 poj 1528 Perfection 题目描述 Perfection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...

  2. 解题报告 poj 3207

    1.        题目 POJ 3207 2.        题目实质 平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.问 ...

  3. 解题报告 poj 2109

    话说,那个题的中文翻译是:开一个高精度数 p 的 n 次方根 k . #include <cstdio> #include <cmath>int main() {double ...

  4. 【解题报告】Leecode 372. 超级次方——Leecode每日一题系列

    题目链接:https://leetcode-cn.com/problems/super-pow/ 题解汇总:https://leetcode-cn.com/problems/max-increase- ...

  5. 【解题报告】Leecode 859. 亲密字符串——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十四天 题目链接:https://leetcode-cn.com/problems/buddy-strings/ 题解汇总:https://zhanglong.blog.c ...

  6. 【解题报告】Leecode 384. 打乱数组——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十三天 题目链接:https://leetcode-cn.com/problems/shuffle-an-array/ 题解汇总:https://zhanglong.blo ...

  7. 解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/ 题解汇总:https://zhanglong.blo ...

  8. 【解题报告】Leecode. 575. 分糖果——Leecode每日一题系列

    题目链接:https://leetcode-cn.com/problems/distribute-candies/ 题解汇总:https://zhanglong.blog.csdn.net/artic ...

  9. 【解题报告】Leecode 500. 键盘行——Leecode每日一题系列

    今天是坚持每日一题打卡第七天 题目描述 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词.键盘如下图所示. 美式键盘 中: 第一行由字符 "qwert ...

  10. 解题报告——2017年C/C++ A组第五题 字母组串(递归)

    题目描述: 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","A ...

最新文章

  1. telegraf监控mysql数据库_部署Telegraf+Influxdb+Grafana 架构来监控 MySQL
  2. python比赛2020_2020蓝桥杯python组备战方法
  3. 课程作业1:字符型强制转化为整型
  4. python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...
  5. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
  6. Python-初体验
  7. js 兼容设置透明度
  8. 通过HTTP协议发送远程消息
  9. Ubuntu 10.10 安装新版 Ubuntu One 客户端
  10. jquery 获取整个表单_15个表单验证jQuery插件和库
  11. 金融数据分析(十三)投资组合问题
  12. 加州大学戴维斯分校 计算机科学,加州大学戴维斯分校计算机科学申请要求详细解读...
  13. 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序
  14. 微信王者服务器怎么删掉,微信王者荣耀账号怎么注销 王者注销微信账号方法一览...
  15. 2019保研回顾——西电计科到北理工计科
  16. 【时序逻辑电路(sequential logic circuit)】
  17. 液晶显示屏选型重点参数
  18. GeoServer操作文档
  19. vue+Element中append-to-body的使用
  20. 《学术小白的实战之路》01 LDA-Word2Vec-TF-IDF组合特征的机器学习情感分类模型研究

热门文章

  1. 一种低侵入性的组件化方案 之 组件化需要考虑的几个问题
  2. feign三:覆写feign的默认配置及feign的日志
  3. 微信小程序app配置指南
  4. 一起来当网管(一)——Windows Server上的DHCP配置
  5. typename的含义
  6. PHP下简单交换两个变量
  7. 小卷积核的特征图与卷积参数变化不大,计算量变化明显
  8. Community Enterprise Operating System ISO 全镜像下载
  9. 第三章 选择结构
  10. 常用JQUERY插件大全