灯塔

灯塔照亮问题

链接:https://www.nowcoder.com/acm/contest/159/A
来源:牛客网
 

灯塔

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述

Z市是一座港口城市,来来往往的船只依靠灯塔指引方向。
在海平面上,存在n个灯塔。每个灯塔可以照亮以它的中心点为中心的90°范围。特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要么与坐标轴成45°。 由于经费限制,Z市的灯塔只能被点亮一座。你需要求出在这种情况下,是否存在一座灯塔能够照亮Z市的所有灯塔。

输入描述:

第一行一个整数T,表示数据组数。
对于每组数据,第一行一个整数n,表示灯塔的数量。
接下来n行,每行两个整数xi,yi,表示第i座灯塔的坐标点。

输出描述:

如果存在一座灯塔能够照亮Z市的所有灯塔则输出Yes,否则输出No(区分大小写)。

示例1

输入

复制

2
4
1 1
1 2
2 1
2 2
5
4 7
0 4
7 3
3 0
3 4

输出

复制

Yes
No

备注:

n≤1000000,T≤10,0≤|xi|,|yi|≤109

代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>

using namespace std;

struct A
{
    long long x,y;
}a[1000005];

long long n,max_x,max_y,t,min_x,min_y,min_b1,max_b1,min_b2,max_b2;

int main()
{
    cin>>t;
    while(t--)
    {
        int flag=0;
        max_x=max_y=max_b1=max_b2=-1000000010;
        min_x=min_y=min_b1=min_b2=1000000010;
        cin>>n;
        for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i].x,&a[i].y);
        for(int i=1;i<=n;i++) {
             max_x=max(max_x,a[i].x);    //分别求max(x),min(x),max(y),min(y),max(x+y),min(x+y),max(x-y),min(x-y);
             min_x=min(min_x,a[i].x);
             max_y=max(max_y,a[i].y);
             min_y=min(min_y,a[i].y);
             min_b1=min(min_b1,a[i].x+a[i].y);
             max_b1=max(max_b1,a[i].x+a[i].y);
             min_b2=min(min_b2,a[i].x-a[i].y);
             max_b2=max(max_b2,a[i].x-a[i].y);
        }
        for(int i=1;i<=n;i++)
        {
            if(((a[i].x==max_x||a[i].x==min_x)&&(a[i].y==max_y||a[i].y==min_y))||((a[i].x+a[i].y==max_b1||a[i].x+a[i].y==min_b1)&&(a[i].x-a[i].y==max_b2||a[i].x-a[i].y==min_b2)))
            {
                flag=1;
                break;
            }
        }
        if(flag) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}

 

### 灯塔模式的概念及应用场景 灯塔模式并非传统意义上的设计模式,而是指一种架构规划或企业级解决方案的理念。它通常被用于描述在复杂系统中起到导航作用的核心组件或方法论。以下是对灯塔模式及相关概念的详细介绍。 --- #### 1. **灯塔模式的基本概念** 灯塔模式强调在一个复杂的环境中提供明确的方向和指导,类似于航海中的灯塔船只指引方向。在软件开发和技术架构中,“灯塔”可以是一个核心模块、一套标准流程或是某种技术框架,帮助团队应对不确定性并优化资源配置[^5]。 例如,在大型企业的数字化转型过程中,灯塔工厂(Lighthouse Factory)作为一种先进制造理念,通过集成物联网(IoT)、人工智能(AI)和其他新兴技术,实现了生产效率的最大化以及成本的有效控制[^5]。 --- #### 2. **灯塔模式的关键组成部分** - **高层管理的支持** 成功实施灯塔模式需要来自公司最高层的战略决策支持。定期汇报项目进度并与管理层保持紧密联系,有助于获得必要的资源投入和政策倾斜[^5]。 - **跨部门协作** 不同职能部门之间可能存在目标差异甚至冲突,因此有效的沟通机制显得尤为重要。通过建立统一的目标体系,促进各部门协同作业,最终达成一致成果[^5]。 - **外部伙伴网络建设** 当前商业环境日益全球化,单一组织难以独自完成所有任务。与供应商、客户及其他利益相关方形成战略联盟,共同探索场机会和发展潜力,成为推动灯塔计划落地的重要因素之一[^5]。 --- #### 3. **灯塔模式的应用场景** ##### (1)智能制造领域 在全球制造业转型升级的大背景下,越来越多的企业开始尝试打造所谓的“灯塔工厂”。这类设施不仅采用了最新的自动化设备和技术手段,还注重数据驱动下的持续改进活动。比如某知名汽车制造商就借助工业互联网平台实现了供应链上下游的信息透明化共享,大幅缩短新产品上周期的同时降低了库存水平。 ##### (2)云计算与分布式数据库 随着云原生趋势愈演愈烈,像 YugaByte DB 这样的新一代分布式 SQL 数据库产品逐渐崭露头角。它们凭借强大的扩展能力和高可用特性,为企业搭建起稳定可靠的基础设施底座,助力其从容应对海量并发请求带来的压力测试挑战[^4]。 ##### (3)软件工程实践 虽然严格意义上不属于经典设计模式范畴,但在某些特殊情况下也可以借鉴灯塔思维来解决实际问题。例如状态机模型就是这样一个典型案例——通过对业务逻辑的状态变迁规律进行建模分析,我们可以更清楚地理解整个系统的运作原理,并据此制定相应的应急预案措施[^3]。 --- #### 4. **灯塔模式与其他设计模式的关系** 尽管二者侧重点有所不同,但本质上都追求提高代码质量和服务能力这一终极目的。具体来说: - 如果把整个应用程序看作一艘航行于大海之上的巨轮,则各类基础性设计模式相当于船体结构本身; - 而灯塔模式则扮演着罗盘角色,负责指示前进路线并对沿途障碍物发出预警信号。 由此可以看出,合理运用这两种思路可以帮助开发者构建更加健壮且易维护的技术栈。 --- ### 示例代码片段展示 下面给出一段基于 Python 的伪代码示例,演示如何利用有限状态机(FSM)模拟简易版的任务调度器行为: ```python class TaskScheduler: def __init__(self): self.state = 'idle' def start(self): if self.state == 'idle': print("Task started.") self.state = 'running' elif self.state == 'paused': print("Resuming task...") self.state = 'running' else: print("Already running.") def pause(self): if self.state == 'running': print("Task paused.") self.state = 'paused' else: print("Cannot pause at current state.") def stop(self): if self.state != 'stopped': print("Stopping task completely.") self.state = 'stopped' else: print("Task already stopped.") if __name__ == "__main__": scheduler = TaskScheduler() scheduler.start() # 输出: Task started. scheduler.pause() # 输出: Task paused. scheduler.stop() # 输出: Stopping task completely. ``` 此脚本展示了三种基本动作(`start`, `pause`, `stop`)对应的不同响应情况,反映了真实世界里常见的时间序列控制需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值