HOJ 2278 IP Filtering (二分)
HOJ 2278
主要思路:将IP地址看成4位256进制的数,转化成十进制,一个segment就是一个区间。
先将所有的segment按左端点升序排列,如果几个segment有重叠,则将它们合并成一个区间。
int dn=0;l=seg[0].start;r=seg[0].end;for(int j=1;j<i;j++){if(seg[j].start<=r){r=max(seg[j].end,r);continue;}seg[dn].start=l;seg[dn].end=r;dn++;l=seg[j].start;r=seg[j].end;}seg[dn].start=l;seg[dn].end=r;dn++;
这样结束之后,可以获得几个没有公共区域的区间。
接下来可以对segment的下标进行二分了。
如果seg[i].start>target,说明target落在了有效区间的左边,此时应该取二分的上半区域,即low=mid+1
同理,如果seg[i].end<target,此时应该high=mid-1;
low=0;high=dn-1;while (low <= high){mid = (high + low) / 2;if(temp>=seg[mid].start&&temp<=seg[mid].end){flag=1;break;}if (seg[mid].start>temp){high = mid-1 ;}else if(seg[mid].end<temp){low = mid + 1;}}
这样最终如果能找到一个区间seg[mid],使target在这个区间内,输出yes,若low>high之后仍然没有找到这样的区间,说明target不在任何一个区间内,输出no.
总的来说是挺简单的一道二分,却卡了很长时间。总是在各种细节上出错,顾此失彼。说明练习不足,码力不够,容易犯迷糊。
转载于:https://www.cnblogs.com/MicZ/archive/2012/08/24/2785380.html
HOJ 2278 IP Filtering (二分)相关推荐
- Day 1 二分搜索训练总结
其实二分是一个重要的思想,有些题目不一定一眼就能看出二分,需要根据特定的条件选择正确的解法,有时二分答案时验证很简单,有时却不那么容易.一般来说,在最大(小)的条件下找一个最小(大)的解的时候可以用二 ...
- 明明白白你的Linux服务器——网络篇
原文地址:http://os.51cto.com/art/201007/209530.htm 一.服务器的网络配置 在服务器的网络配置时,喜欢图形的朋友可用setup或system-config-ne ...
- CPUID — CPU Identification
CPUID- CPU Identificationhttps://www.felixcloutier.com/x86/cpuid 目录 CPUID - CPU Identification Instr ...
- cpp+数据结构+设计模式
文章目录 O KR cpp # 参考文献 O C++和数据结构不再成为面试短板 KR cpp +++++++++++++++++++++++++ ++++++++++++++++++++++++ ++ ...
- SmartFoxServer(SFS) 是什么?
SmartFoxServer专门用于多用户联机游戏开发,支持Flash/Flex/Air, Java, .Net, Unity3D, Apple iPhone 开发. 目前有3个版本:SFS Lite ...
- OpenStack Train Magnum部署Kubernetes(1)--部署OpenStack Train
基于Packstack部署OpenStack Train版本 部署环境 操作系统:CentOS Linux release 7.7.1908 OpenStack:Train PackStack:ope ...
- 第七章、网络安全与主机基本防护: 限制端口, 网络升级与 SELinux
通过第一篇的锻炼之后,现在你应该已经利用 Linux 连上 Internet 了.但是你的 Linux 现在恐怕还是不怎么安全的. 因此,在开始服务器设定之前,我们必须要让你的系统强壮些!以避免被恶意 ...
- 鸟哥的Linux私房菜(服务器)- 第七章、网络安全与主机基本防护: 限制端口, 网络升级与 SELinux
第七章.网络安全与主机基本防护: 限制端口, 网络升级与 SELinux 最近更新日期:2011/07/21 通过第一篇的锻炼之后,现在你应该已经利用 Linux 连上 Internet 了.但是你的 ...
- 16 | 二分查找(下):如何快速定位IP对应的省份地址?
问题:假设我们有 12 万条这样的 IP 区间与归属地的对应关系,如何快速定位出一个 IP 地址的归属地呢? 二分查找的变形问题: 变体一:查找第一个值等于给定值的元素 public int bsea ...
最新文章
- 数据分析软件python 对电脑的要求-数据分析5大软件PK,你最爱哪个?
- 开启应用的时候总是以管理员身份打开的解决方案
- js正则限制字符串长度_正则笔记(3)万字长文,慎点。
- 深入研究memcache 特性和限制
- Android开发笔记(一百零六)支付缴费SDK
- Loadrunner之-VirtualUserGenerator录制web程序脚本
- vue x 兼容iphone_【前端vue系列】初始化一个vue工程
- python安装第三方库出现问题怎么办_关于Python第三方库安装失败问题的解决方案...
- 毕业论文系列-公式编号-等号对齐及编号
- 系统集成考前冲刺口诀
- lvds输入悬空_lvds接口定义
- 我国支付结算体系概况
- 短信后台功能与通道路由模块客户通道选择短信平台开发|国际短信通道短信后台源码
- 前端-鼠标经过后图标变色
- 程序员常用软件介绍--持续更新
- 生态保护重要性评价之防风固沙重要性评价
- 「AIGC」- ChatGPT可以怎么玩?
- java文件流写入文件_JAVA 输入输出流 本地文件读写
- PMD相位提取及相位展开简述
- 安东尼罗宾--激发你的无限潜能[连载]--3 4章
热门文章
- Ribbon、Feign、OpenFeign、spring-cloud-openfeign的区别
- 随笔(二)-- PyCharm如何更改背景图片
- STM32F4 HAL库开发 -- 复用功能外设
- mp4v2再学习 -- H264视频编码成MP4文件
- 大数运算(6)——大数阶乘(求位数)
- Binder源码分析之Native层(原)
- python编程环境要求_python公开课|我们需要优秀Python编程环境的要求居然是这些...
- C++为什么空格无法输出_C 语言 第8章-字符输入/输出和输入验证
- 聊天服务器的外部流量
- Atcoder AGC031C Differ By 1 Bit (构造、二进制)