ssl例2
2016-05-18 20:28
281 查看
题目大意:
桌子上零散地放着若干个不同颜色的盒子,桌子的后方是一堵墙。如右图所示。问从桌子前方可以看到多少个盒子?假设人站得足够远(自己设计测试数据,输入时,由底向上,从左到右)。
题解
可以这样来看这道题:x轴上有若干条不同线段,将它们依次染上不同的颜色,问最后能看到多少种不同的颜色?
我们可以这样规定:x轴初始是颜色0,第一条线段染颜色1,第二条线段染颜色2,以此类推。
原先构造线段树的方法不再适用,但是我们可以通过修改线段树的cover域的定义,使得这道题也能用线段树来解。
定义cover如下:cover=-1表示该区间由多种颜色组成。cover>=0表示该区间只有一种单一的颜色cover。
代码:
这题统计中与例1有些小区别:
使用一个数组Flag,初始化为0。遍历线段树,对于每种颜色c对Flag[c]赋值1。最后统计Flag中1的个数即可。(注意颜色0应该排除在外,可以在最后减1)
if Tree[p].cover >= 0
then Flag[Tree[p].cover] := 1
else if r - l > 1
then begin
Count(p * 2, l, (l + r) div 2);
Count(p * 2 + 1, (l + r) div 2, r);
end;
桌子上零散地放着若干个不同颜色的盒子,桌子的后方是一堵墙。如右图所示。问从桌子前方可以看到多少个盒子?假设人站得足够远(自己设计测试数据,输入时,由底向上,从左到右)。
题解
可以这样来看这道题:x轴上有若干条不同线段,将它们依次染上不同的颜色,问最后能看到多少种不同的颜色?
我们可以这样规定:x轴初始是颜色0,第一条线段染颜色1,第二条线段染颜色2,以此类推。
原先构造线段树的方法不再适用,但是我们可以通过修改线段树的cover域的定义,使得这道题也能用线段树来解。
定义cover如下:cover=-1表示该区间由多种颜色组成。cover>=0表示该区间只有一种单一的颜色cover。
代码:
这题统计中与例1有些小区别:
使用一个数组Flag,初始化为0。遍历线段树,对于每种颜色c对Flag[c]赋值1。最后统计Flag中1的个数即可。(注意颜色0应该排除在外,可以在最后减1)
if Tree[p].cover >= 0
then Flag[Tree[p].cover] := 1
else if r - l > 1
then begin
Count(p * 2, l, (l + r) div 2);
Count(p * 2 + 1, (l + r) div 2, r);
end;
相关文章推荐
- 访问Nginx发生SSL connection error的一种情况
- MySQL复制解决方案(Replication Solutions)
- Apache SSL服务器配置SSL详解
- 配置apache默认使用ssl的方法
- World Wide Web Publishing 服务尝试删除 IIS 所有的 SSL 配置数据失败的几种方法
- Apache、SSL、MySQL和PHP平滑无缝地安装
- mysql通过ssl的方式生成秘钥具体生成步骤
- windows服务器中检测PHP SSL是否开启以及开启SSL的方法
- python简单实现基于SSL的IRC bot实例
- Tomcat ssl报错Connector attribute SSLCertificateFile must be defined when using SSL with APR解决方法
- PHP实现支持SSL连接的SMTP邮件发送类
- 在Apache服务器上安装SSL支持的教程
- MySQL基于SSL协议进行主从复制的详细操作教程
- 提高NodeJS中SSL服务的性能
- PHP下SSL加密解密、验证、签名方法(很简单)
- LNMP系列教程之 SSL安装WordPress博客(程序下载与安装)
- IIS7下配置SSL的方法分析