首页 > 其他分享 >Fox And Names

Fox And Names

时间:2024-07-16 18:09:22浏览次数:15  
标签:head int s2 Fox ++ edge Names size

这题题意是根据被改变的字典序给出的字符串求出字典序。比较字典序大小就是看两个字符串第一个不同的字符或是在前面完全相同的情况下比较长度。所以当前面的条件都不满足时就是题目的impossible。这题主要就是找出相邻两个字符串中第一个不相等字符,由此我们就得出这两个字符串的字典序排列,在进行链式前向星存储和拓扑输出

点击查看代码
/* 台州第一深情 */
#include <bits/stdc++.h>
using namespace std;
using i64 = long;
using ll = long long;
typedef pair<int, int> PII;
const int N = 1e4 + 5;
string s[N];
struct Edge
{
    int to, next;//next记录上一条边的位子
} edge[N];
int head[N], in[N], cnt;//head记录当前from连成的边的下标
void addedge(int from, int to)
{
    edge[cnt] = {to, head[from]};
    head[from] = cnt++;
    in[to]++;
}
queue<int> p;
int tp()
{
    priority_queue<int, vector<int>, greater<int>> q;//优不优先都可以,因为任意输出
    for (int i = 0; i < 26; ++i)
    {
        if (!in[i])
            q.push(i);
    }
    while (!q.empty())
    {
        int from = q.top();
        q.pop();
        p.push(from);
        int i = head[from];
        while (i != -1)
        {
            in[edge[i].to]--;
            if (!in[edge[i].to])
            {
                q.push(edge[i].to);
            }
            i = edge[i].next;
        }
    }
    return p.size() == 26;//因为要得出所有的排列,所以如果p的长度<26也是impossible也代表有环
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    memset(head, -1, sizeof(head));
    cin >> s[0];
    for (int i = 1; i < n; ++i)
    {
        cin >> s[i];
        string s1 = s[i - 1], s2 = s[i];
        int f = 0;
        for (int j = 0; j < min(s1.size(), s2.size()); j++)
        {
            if (s1[j] != s2[j])
            {
                f++;
                addedge(s1[j] - 'a', s2[j] - 'a');
                break;
            }
        }
        if (!f && s1.size() > s2.size())//如果前面的点都一样并且长度长的排在短的前面,那肯定是不行的
        {
            cout << "Impossible\n";
            return 0;
        }
    }
    if (tp())
    {
        while (p.size())
        {
            int i = p.front();
            p.pop();
            cout << char(i + 'a');
        }
    }
    else
    {
        cout << "Impossible\n";
    }
    return 0;
}

标签:head,int,s2,Fox,++,edge,Names,size
From: https://www.cnblogs.com/tzstlove/p/18305791

相关文章

  • Apollo核心概念之“Namespace”
    在Apollo配置中心中,“Namespace”是一个核心概念,它代表了一组相关配置项的集合,可以将其理解为一个配置文件的概念。Namespace的设计使得配置能够按照逻辑和用途进行分类和管理,提高了配置的组织性和可维护性。以下是Namespace的几个关键点:命名空间的类型:ApplicationName......
  • [namespace hdk] 向量 direct_vector
    我忏悔我有罪我心情又不好了不知道干什么所以又不小心封了个东西啊啊啊啊啊啊啊啊功能已重载[]运算符(右值)谁能教教我怎么把[]变成stl类似的左值表达式(直接返回地址需要在前面加*,挺麻烦的)已重载=运算符(可使用向量或std:::vector)已重载++=--=-(负号)*(点乘)*=(......
  • Apifox报错404:网络错误,请检查网络,或者稍后再试的解决办法
    详细报错如图:解决办法:1、检查请求方法(get,post)是否正确,请求的URL是否正确,如果不正确,修改后重新发起请求;如果都正确,再参考22、复制curl用postman来请求第一步apifox复制出curl第二步postman导入curl第三步发起请求,如下图响应成功......
  • [namespace hdk] Balanced_tree 整合
    代码#include<bits/stdc++.h>usingnamespacestd;namespacehdk{ namespacebalanced_tree{ constintN=2000001,inf=114514191; classsplay{ private: introot,tot; structtree{ intw; intcnt,size; intfa,son[2]; }t[N];......
  • 如何删除顽疾Terminating状态的namespace
    删除Terminating状态的namespace  话不多说,开整获取nskubectlgetnsNAMESTATUSAGEarms-promActive16dcattle-impersonation-systemTerminating13ddefaultActive......
  • Apifox 6月更新|定时任务、内网自部署服务器运行接口定时导入、数据库 SSH 隧道连接
    Apifox新版本上线啦!!! 看看本次版本更新主要涵盖的重点内容,有没有你所关注的功能特性:自动化测试支持设置「定时任务」 支持内网自部署服务器运行「定时导入」数据库均支持通过SSH隧道连接自动化测试数据库操作优化 将Apifox更新至最新版,一起开启全新体验......
  • [namespace hdk] ordered_vector
    功能:已重载[]运算符已重载构造函数clear()it()以std::vector形式返回自身print(char='',char='\n')输出,第一个参数为分隔符,第二个参数为结束符count(x)查找x的出现次数find(x)判断x是否出现,是返回1,否则返回0empty()判断当前是否为空size()返回当前元素个数lower......
  • 【保姆级介绍下Foxmail 邮箱】
    ......
  • Gradle Core Plugins (plugin is not in ‘org.gradle‘ namespace)
    记录一个由gradle构建项目遇到的问题:起因:项目原先运行正常,不过个人移动了工程的目录位置,导致出现以下错误GradleCorePlugins(pluginisnotin'org.gradle'namespace)-PluginRepositories(couldnotresolvepluginartifact'com.android.application:com.androi......
  • FireFox 编译指南2024 Windows10篇-环境准备(一)
    1.引言在开源浏览器项目中,Firefox因其高性能和灵活性而备受开发者青睐。为了在本地环境中编译和定制Firefox,开发者需要做好充分的环境准备工作。这不仅是编译成功的基础,也是后续调试、优化和二次开发的关键步骤。编译Firefox是一个复杂而耗时的过程,涉及大量的代码文件和依赖......