灯塔

原题1269

题意

有n个灯塔m条关系,每条关系a,b代表a她可以往b塔传消息,问你告诉几个塔就可以传遍所有塔。

解析

首先把所有塔分为两种:有通向此塔的其他塔的塔——子塔,和必须由你来告诉的塔——母塔。

对于第二种,我们做一遍dfs,删去下面可以延伸的子塔,剩下的只有两种塔了:原先的母塔,和自成环路的子塔群。我们再对所有的塔删一遍,同时记录dfs的次数就是ans。

代码

#include<stdio.h>

int canfin[100009];
int ishead[100009];

int head[100009];
struct edge{
    int to,nex;
}e[1000009];

void fin(int ar){
    int mid;
    for(int i=head[ar];i>=0;i=e[i].nex){
        mid=e[i].to;
        if(!canfin[mid]){
            canfin[mid]=1;
            fin(mid);
        }
    }
    return;
}

int main(){
    int n,m,x,y,i;
    scanf("%d%d",&n,&m);
    for(i=1;i<=n;i++){
        head[i]=-1;ishead[i]=1;
    }
    for(i=1;i<=m;i++){
        scanf("%d%d",&x,&y);
        e[i].to=y;e[i].nex=head[x];head[x]=i;
        ishead[y]=0;//==1代表母塔 
    }
    for(i=1;i<=n;i++){
        if(!ishead[i])continue;
        if(canfin[i])continue;//已经删过了 
        fin(i);
    }
    int sum=0;
    for(i=1;i<=n;i++){
        if(!canfin[i])
        sum++,
        fin(i);
    }
    printf("%d\n",sum);
    return 0;
} 

还有一个东西,cstdio换成stdio.h时间减少了80%

### 灯塔模式的概念及应用场景 灯塔模式并非传统意义上的设计模式,而是指一种架构规划或企业级解决方案的理念。它通常被用于描述在复杂系统中起到导航作用的核心组件或方法论。以下是对灯塔模式及相关概念的详细介绍。 --- #### 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`)对应的不同响应情况,反映了真实世界里常见的时间序列控制需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值