博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PPT1 例2
阅读量:4549 次
发布时间:2019-06-08

本文共 1662 字,大约阅读时间需要 5 分钟。

题意/Description

 

    桌子上零散地放着若干个不同颜色的盒子,桌子的后方是一堵墙。如右图所示。问从桌子前方可以看到多少个盒子?假设人站得足够远(自己设计测试数据,输入时,由底向上,从左到右)。

 

 

读入/Input

(不详)

 

16  //桌子长度
5   // 盒子数量
4 7
12 14
1 5
6 10
11 16

 

输出/Output

  可以看到多少个盒子。(4)

 

题解/solution

 

    使用一个数组F,初始化为0。遍历线段树,对于每种颜色c对F[c]赋值1。最后统计F中1的个数即可。(注意颜色0应该排除在外,可以在最后减1)

 

代码/Code

 

type  arr=record        cover:longint;      end;var  tree:array[0..2001] of arr;  n,m,ans:longint;  f:array[0..2001] of integer;procedure ins(p,l,r,a,b,c:longint);var  m:longint;begin  with tree[p] do    begin      if cover<>c then        begin          m:=(l+r) div 2;          if (a=l) and (b=r) then cover:=c else            begin              if cover>=0 then                begin                  tree[p*2].cover:=cover;                  tree[p*2+1].cover:=cover;                  cover:=-1;                end;          if b<=m then ins(p*2,l,m,a,b,c) else            if a>=m then ins(p*2+1,m,r,a,b,c) else              begin                ins(p*2,l,m,a,m,c);                ins(p*2+1,m,r,m,b,c);              end;            end;        end;    end;end;procedure count(p,l,r:longint);var  m:longint;begin  m:=(l+r) div 2;  with tree[p] do    begin      if cover>=0 then f[cover]:=1 else        if r-l>1 then          begin            count(p*2,l,m);            count(p*2+1,m,r);          end;    end;end;procedure main;var  a,b,i:longint;begin  fillchar(tree,sizeof(tree),255);  readln(m);  readln(n);  for i:=1 to n do    begin      readln(a,b);      ins(1,1,m,a,b,i);    end;end;procedure print;var  i:longint;begin  count(1,1,m);  for i:=0 to m do    if f[i]=1 then inc(ans);  writeln(ans);end;begin  main;  print;end.

转载于:https://www.cnblogs.com/zyx-crying/p/9319705.html

你可能感兴趣的文章
leetcode 30 Substring with Concatenation of All Words
查看>>
验证登录信息是否合法
查看>>
线程池
查看>>
git版本控制器的基本使用
查看>>
Redis 笔记与总结4 set 和 zset 类型
查看>>
jQuery Ajax 回调函数中调用$(this)的问题 [ 转 ]
查看>>
thymeleaf:字符串拼接+输出单引号
查看>>
springboot:集成fastjson(教训)
查看>>
网络流 Edmons-Karp 算法讲解
查看>>
「NOIP2018模拟9.10」公约数 - 找规律 - gcd
查看>>
使用java理解程序逻辑(15)
查看>>
bzoj 1879 状压dp
查看>>
python 一些特殊用法和坑
查看>>
WIFI密码破解全攻略
查看>>
c++string各种函数
查看>>
errno.h含义
查看>>
字典树(模型体)
查看>>
盒模型详解
查看>>
bzoj2157 旅游
查看>>
bzoj5016 [Snoi2017]一个简单的询问
查看>>