237. 程序自动分析 并查集 + 离散化

题目

在这里插入图片描述

题解思路

数据范围太大 开不了那么大的数组(最大1e8) 所以我们进行离散化
使用<unordered_map>进行离散实现 O(1)的查找(推荐map是logn级别的查找)
可以先对相等的进行合并
再对不相等的进行判断

因为定义相等是不会影响后面不相等的情况的 。

因为如果相等不对 我们假定他正确 不相等肯定不对 依然可以推出答案 不影响最后的答案

而且这题要开两倍空间 (WA了2次)
两个数可能全部都不一样

AC代码
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#include <vector>
#include <algorithm>
#include <map>
#include <string>
#include <unordered_map>
using namespace std;

const  int  INF =  0x3f3f3f3f;


unordered_map <int , int > h;

struct node
{
    int i , j , e ;
}q[100100];
int a[200100];
int find2(int x )
{
    if ( x != a[x] )
        a[x] = find2(a[x]);
    return a[x];
}

void uio (int x ,int y )
{
    int fx = find2(x) ;
    int fy = find2(y) ;
    if ( fx != fy )
    {
        a[fy] = fx ;
    }
}
int main ()
{
    ios::sync_with_stdio(false);
    int T;
    cin >> T ;
    while( T-- )
    {
        h.clear();
        int n, pit = 1 ;
        cin>>n;
        for (int i = 1 ; i <= n ; i++ )
        {
            int t1,t2,t3;
            cin>>t1>>t2>>t3;
            if ( h.count(t1) == 0 )
            {
                h[t1] = pit ;
                pit++;
            }
            if ( h.count(t2) == 0 )
            {
                h[t2] = pit ;
                pit++;
            }
            q[i] = { h[t1] , h[t2] , t3 };
        }
        for (int i = 1 ; i <= pit ; i++ )  a[i] = i ;
        for (int i = 1 ; i <= n ; i++ )
        {
            if ( q[i].e == 1 )
            {
                uio( q[i].i , q[i].j );
            }
        }
        int book = 1 ;
        for (int i = 1 ; i <= n ; i++ )
        {
            if ( q[i].e == 0 )
            {
                if ( find2(q[i].i) == find2(q[i].j) )
                {
                    book = 0 ;
                    break;
                }
            }
        }
        if (book)
        {
            cout<<"YES\n";
        }else
        {
            cout<<"NO\n";
        }

    }
    return 0 ;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PLC(可编程逻辑控制器)是一种广泛应用于离散行业自动程序离散行业是指生产过程中的物料或零件在生产过程中是可分辨的,如制造业的组装过程、流水线加工等。 PLC的主要作用是根据预先设定的逻辑规则和条件,控制离散行业的自动过程。PLC能够接收来自传感器的输入信号,经过处理后,通过输出模块控制执行器的操作。这样,PLC可以实现对生产过程中的各种物料、工件、机器等的控制和调度。 离散行业中的自动程序可以包括以下几个方面: 1. 过程控制:PLC可以根据生产过程的要求,控制物料在不同的工序之间的转移和处理。通过控制传送带、机械手臂等执行器的动作,PLC可以实现自动的产品加工和装配。 2. 故障检测与诊断:PLC可以监测系统中的故障信号,并在出现异常情况时采取相应的措施,如停机、报警等。同时,PLC还可以进行故障诊断,帮助工作人员快速定位和修复故障,提高生产效率。 3. 数据采集与监控:PLC可以收集和处理来自传感器的数据,并将其显示在人机界面上。通过监控系统的工作状态和数据,工作人员可以及时了解生产过程的情况,并采取相应的控制措施。 4. 系统集成与通信:PLC可以通过与其他设备的通信接口,实现不同设备之间的信息交换和协同工作。这样,不同设备之间可以共享数据,并根据需要进行协调和调度。 总之,PLC在离散行业的自动中起着至关重要的作用。通过对其逻辑程序的编写和调试,可以实现对生产过程的精确控制和高效管理。这不仅可以提高生产效率和质量,还可以减少人力投入和生产成本,最终提升企业的竞争力和经济效益。 ### 回答2: PLC(可编程逻辑控制器)在离散行业自动中起到了关键的作用。离散行业包括了许多不连续或离散的生产过程,如制造业中的装配线、包装线、机械加工等。 PLC离散行业自动程序是通过使用PLC编程语言,创建一系列逻辑和功能,来控制和监控离散生产过程的运行。通过编写程序,我们可以控制和监测各种设备,如传感器、电机、阀门等,以确保生产过程的准确性和高效性。 PLC程序通常包括以下几个方面: 1. 输入/输出(I/O)控制:PLC通过与外部设备的输入/输出接口进行连接,获取输入信号并根据程序逻辑作出相应的输出动作。通过监测传感器信号,PLC可以实时检测并响应各种条件,如温度、压力、速度等。 2. 逻辑控制:PLC编程语言可以包含条件判断、循环、计算等逻辑操作,以实现对生产过程的精确控制。根据不同的输入信号和设定的条件,PLC可以决定下一步应该执行的操作,如启动/停止设备、改变工作模式等。 3. 数据处理与通信:PLC能够处理和存储各种数据,如传感器数据、生产计数等。通过与上位机或其他设备的通信接口,PLC可以与其他系统进行数据交换和共享,实现生产过程的信息和远程监控。 4. 故障检测与报警:PLC程序可以包含故障检测和报警功能,通过监测设备状态和运行数据,及时判断是否存在异常情况,并发出相应的报警信号。这能够帮助操作人员及时采取措施,防止生产过程中的故障和事故发生。 总而言之,PLC离散行业自动程序利用PLC的功能和编程语言,可以创建一个精确、高效、可靠的控制系统,实现离散生产过程的自动和智能。通过对PLC程序的编写和调试,我们能够优生产过程,提升生产效率和质量,降低成本和风险。 ### 回答3: PLC(可编程逻辑控制器)在离散行业中,是用于实现自动控制的关键设备之一。它可以根据预设的程序和输入信号来控制各种设备和机械的运行,实现生产线的自动操作。 在离散行业中,PLC的应用非常广泛。例如,在制造业中,PLC常被用于控制生产线上的各种动作和操作,如自动装配、运输、分拣和包装等。通过编写逻辑控制程序,可以使生产线的各个环节实现协调和自动,提高生产效率并降低人力成本。 另外,PLC在离散行业中还可以实现许多其他功能。例如,在工厂设备的控制中,PLC可以监测设备的状态,及时发现问题并采取相应的控制措施,保障设备的正常运行和工作效率。此外,PLC还可以实现对安全措施的控制,如门禁系统、紧急停车等,确保工作场所的安全性。 PLC作为离散行业中的自动程序,具有许多优点。首先,PLC具有高度可编程的特性,可以根据不同需求编写相应的逻辑控制程序,实现不同的功能。其次,PLC具有可靠性高、反应速度快的特点,减少了人为错误的可能性,提高了工作效率。此外,PLC还具有模块的设计,便于维护和升级。 综上所述,PLC在离散行业中是一个非常重要的自动程序,它通过编写逻辑控制程序,实现对生产线和设备的自动控制,提高工作效率、降低成本、确保安全。随着离散行业的发展,PLC的应用前景将会更加广阔。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值