P2169 正则表达式

然而题目和正则表达式没一点关系

强连通分量,缩点,spfa

先缩点,然后跑最短路。

emmm,堆优化SPFA了解一下?

// luogu-judger-enable-o2
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
using namespace std;

int from[1000007],to[1000007],nex[1000007],val[1000007],head[200007];
int dfn[200007],low[200007],instack[200007],dfsnum,sccnum,belong[200007];
int dis[200007],inque[200007];
struct cmp{bool operator () (int &x,int &y){return dis[x]>dis[y];}};
priority_queue<int,vector<int>,cmp> q;
stack<int> s;

void tarjan(int u)
{
    dfn[u]=++dfsnum;
    low[u]=dfn[u];
    instack[u]=true;
    s.push(u);
    for(int i=head[u];i;i=nex[i])
    {
        if(!dfn[to[i]])
        {
            tarjan(to[i]);
            low[u]=min(low[u],low[to[i]]);
        }
        else if(instack[to[i]])
            low[u]=min(low[u],dfn[to[i]]);
    }
    if(dfn[u]==low[u])
    {
        int v;
        ++sccnum;
        do
        {
            v=s.top();
            s.pop();
            belong[v]=sccnum;
            instack[v]=false;
        }while(u!=v);
    }
} 

void spfa(int s)
{
    int v;
    dis[s]=0;
    inque[s]=true;
    q.push(s);
    while(!q.empty())
    {
        v=q.top();
        q.pop();
        for(int i=head[v];i;i=nex[i])
        {
            if(dis[to[i]]>dis[v]+val[i])
            {
                dis[to[i]]=dis[v]+val[i];
                if(!inque[to[i]])
                {
                    inque[to[i]]=true;
                    q.push(to[i]);
                }
            }
        }
    }
}

int main()
{
    ios::sync_with_stdio(false);
    int n,m,x,y,z;
    cin>>n>>m;
    memset(dis,0x7f,sizeof(dis));
    for(int i=1;i<=m;i++)
    {
        cin>>x>>y>>z;
        from[i]=x;
        to[i]=y;
        val[i]=z;
        nex[i]=head[x];
        head[x]=i;
    }
    tarjan(1);
    for(int i=1;i<=m;i++)
        if(belong[from[i]]==belong[to[i]])
            val[i]=0;
    spfa(1);
    cout<<dis[n];
    return 0;
}

转载于:https://www.cnblogs.com/Alarak26/p/9374334.html

内容概要:本文详细探讨了基于MATLAB/SIMULINK的多载波无线通信系统仿真及性能分析,重点研究了以OFDM为代表的多载波技术。文章首先介绍了OFDM的基本原理和系统组成,随后通过仿真平台分析了不同调制方式的抗干扰性能、信道估计算法对系统性能的影响以及同步技术的实现与分析。文中提供了详细的MATLAB代码实现,涵盖OFDM系统的基本仿真、信道估计算法比较、同步算法实现和不同调制方式的性能比较。此外,还讨论了信道特征、OFDM关键技术、信道估计、同步技术和系统级仿真架构,并提出了未来的改进方向,如深度学习增强、混合波形设计和硬件加速方案。; 适合人群:具备无线通信基础知识,尤其是对OFDM技术有一定了解的研究人员和技术人员;从事无线通信系统设计与开发的工程师;高校通信工程专业的高年级本科生和研究生。; 使用场景及目标:①理解OFDM系统的工作原理及其在多径信道环境下的性能表现;②掌握MATLAB/SIMULINK在无线通信系统仿真中的应用;③评估不同调制方式、信道估计算法和同步算法的优劣;④为实际OFDM系统的设计和优化提供理论依据和技术支持。; 其他说明:本文不仅提供了详细的理论分析,还附带了大量的MATLAB代码示例,便于读者动手实践。建议读者在学习过程中结合代码进行调试和实验,以加深对OFDM技术的理解。此外,文中还涉及了一些最新的研究方向和技术趋势,如AI增强和毫米波通信,为读者提供了更广阔的视野。
JavaScript正则表达式和Java正则表达式在语法上有一些差异,但是它们的基本概念和用法是相似的。下面是将JavaScript正则表达式转换为Java正则表达式的一些常见规则: 1. 语法差异: - JavaScript正则表达式使用斜杠(/)作为定界符,而Java正则表达式使用双引号(")作为定界符。 - JavaScript正则表达式中的特殊字符需要进行转义,而Java正则表达式中的特殊字符不需要转义。 2. 字符类: - JavaScript正则表达式中的字符类使用方括号([])表示,而Java正则表达式中使用方括号([])或者Unicode转义(\p{...})表示。 - JavaScript正则表达式中的字符类可以使用连字符(-)表示范围,而Java正则表达式中需要使用Unicode转义(\uXXXX)表示范围。 3. 量词: - JavaScript正则表达式中的量词使用花括号({})表示,而Java正则表达式中使用花括号({})或者问号(?)表示。 - JavaScript正则表达式中的贪婪量词默认是贪婪模式,而Java正则表达式中的贪婪量词需要在后面添加问号(?)来表示非贪婪模式。 4. 边界匹配: - JavaScript正则表达式中的边界匹配使用插入符号(^)和美元符号($)表示,而Java正则表达式中使用\A和\Z表示。 5. 其他差异: - JavaScript正则表达式中的捕获组使用圆括号(())表示,而Java正则表达式中使用圆括号(())或者方括号([])表示。 - JavaScript正则表达式中的反向引用使用反斜杠加数字(\1、\2等)表示,而Java正则表达式中使用美元符号加数字($1、$2等)表示。 以上是一些常见的JavaScript正则表达式转换为Java正则表达式的规则。具体转换时,还需要根据具体的正则表达式进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值