解题报告 poj 2528 (罕见的浮水法解这个题的。。。。。。)
题目大意:给你若干个线段,按层次叠放,求全放好之后有多少线段可以露出来。
都说是线段树,可为啥我怎么看怎么是浮水捏?
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 (罕见的浮水法解这个题的。。。。。。)相关推荐
- poj解题报告——poj 1528 Perfection
原题入口 poj 1528 Perfection 题目描述 Perfection Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- 解题报告 poj 3207
1. 题目 POJ 3207 2. 题目实质 平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接.问 ...
- 解题报告 poj 2109
话说,那个题的中文翻译是:开一个高精度数 p 的 n 次方根 k . #include <cstdio> #include <cmath>int main() {double ...
- 【解题报告】Leecode 372. 超级次方——Leecode每日一题系列
题目链接:https://leetcode-cn.com/problems/super-pow/ 题解汇总:https://leetcode-cn.com/problems/max-increase- ...
- 【解题报告】Leecode 859. 亲密字符串——Leecode每日一题系列
今天是坚持每日一题打卡的第二十四天 题目链接:https://leetcode-cn.com/problems/buddy-strings/ 题解汇总:https://zhanglong.blog.c ...
- 【解题报告】Leecode 384. 打乱数组——Leecode每日一题系列
今天是坚持每日一题打卡的第二十三天 题目链接:https://leetcode-cn.com/problems/shuffle-an-array/ 题解汇总:https://zhanglong.blo ...
- 解题报告-Leecode 563. 二叉树的坡度——Leecode每日一题系列
今天是坚持每日一题打卡的第二十二天 题目链接:https://leetcode-cn.com/problems/binary-tree-tilt/ 题解汇总:https://zhanglong.blo ...
- 【解题报告】Leecode. 575. 分糖果——Leecode每日一题系列
题目链接:https://leetcode-cn.com/problems/distribute-candies/ 题解汇总:https://zhanglong.blog.csdn.net/artic ...
- 【解题报告】Leecode 500. 键盘行——Leecode每日一题系列
今天是坚持每日一题打卡第七天 题目描述 给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词.键盘如下图所示. 美式键盘 中: 第一行由字符 "qwert ...
- 解题报告——2017年C/C++ A组第五题 字母组串(递归)
题目描述: 由 A,B,C 这3个字母就可以组成许多串. 比如:"A","AB","ABC","ABA","A ...
最新文章
- telegraf监控mysql数据库_部署Telegraf+Influxdb+Grafana 架构来监控 MySQL
- python比赛2020_2020蓝桥杯python组备战方法
- 课程作业1:字符型强制转化为整型
- python变量域名_想尝试使用python进行域名分析,可是没有接触过python,想请教请教。...
- OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
- Python-初体验
- js 兼容设置透明度
- 通过HTTP协议发送远程消息
- Ubuntu 10.10 安装新版 Ubuntu One 客户端
- jquery 获取整个表单_15个表单验证jQuery插件和库
- 金融数据分析(十三)投资组合问题
- 加州大学戴维斯分校 计算机科学,加州大学戴维斯分校计算机科学申请要求详细解读...
- 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序
- 微信王者服务器怎么删掉,微信王者荣耀账号怎么注销 王者注销微信账号方法一览...
- 2019保研回顾——西电计科到北理工计科
- 【时序逻辑电路(sequential logic circuit)】
- 液晶显示屏选型重点参数
- GeoServer操作文档
- vue+Element中append-to-body的使用
- 《学术小白的实战之路》01 LDA-Word2Vec-TF-IDF组合特征的机器学习情感分类模型研究