• [校内模拟题2]


    水题

    但是原地螺旋炸裂

    都不好意思贴代码了QWQ

    enc

    【问题背景】

    zhx 和他的妹子聊天。

    【问题描述】

    考虑一种简单的加密算法。
    假定所有句子都由小写英文字母构成, 对于每一个字母, 我们将它唯一地映射到另一个字母。 例如考虑映射规则:a->b, b->c, c->d, d->a. 那么单词 bad 就会被映射为 cba。这个映射规则的逆映射规则为: b->a, c->b, d->c, a->d。对于密文 cba,我们很容易将它解密为 bad
    当然, 这样的映射需要保证每一个字母映射到的字母是不同的(即不可以出现两个不同的字母映射到同一个字母, 否则将会无法解密)。一种常见的密码攻击方式被称为已知明文攻击。 具体地, 在你不知道映射表的情况下, 给你一段明文和对应的密文, 你可以推导出一些的映射规则, 下一次你收到一条密文, 你就可能可以解密它。 现在你需要完成这样的一个系统。

    【输入格式】

    第一行包含一个字符串, 仅包含小写字母, 表示一段明文。
    第二行包含一个字符串, 仅包含小写字母, 表示这段明文对应的密文, 保证两行长度相同。
    第三行包含一个字符串,仅包含小写字母, 表示你需要解密的密文。

    【输出格式】

    输出共一行, 表示输入中第三行密文对应的明文。 如果不能解密, 输出
    “ERROR”(不包含引号)。注意输入可能出现不自恰的情况

    【样例输入】

    ab
    cc
    cc

    【样例输出】

    ERROR

    【样例输入】

    ab
    ab

    c

    样例输出】

    ERROR

    【样例输入】

    abcde
    bcdea
    cad

    样例输出】

    bec

    【数据范围与规定】

    对于100%的数据, 所有字符串长度<=1000

    ————————————————————————————————

    用map直接模拟,数据里有个比较坑的点,就是根据题目中的描述,明文与密文成一一映射关系。那么知道了25个字母的映射,剩下那个也就自然而然的出来了,而不是输出ERROR。

    【问题背景】
    zhx 给他的妹子们排序。
    【问题描述】
    zhx N 个妹子, 他对第 i 个妹子的好感度为 ai,且所有 ai两两不相等。 现
    N 个妹子随意站成一排, 他要将她们根据好感度从小到大排序。 他使用的是
    冒泡排序算法(详见下)。如果排序过程中好感度为 ai的妹子和aj的妹子发生了交换, 那么她们之间会发生一场口角。
    现在 zhx 想知道, 给定妹子的初始排列, 在排序完成后, 最多存在多少个妹
    子, 她们任意两人之间没发生过口角。

    【输入格式】 

    第一行两个整数 N, 表示妹子数量。
    接下来一行 N 个整数 ai,表示初始第i个妹子的好感度.
    【输出格式】
    一行一个整数, 表示最多满足要求的妹子的个数。
    【样例输入】
    3
    3 1 2
    【样例输出】
    2
    【样例解释】
    {1, 2}
    对于100%的数据, 1 ≤   N ≤ 100000,0≤ai<N.

    ————————————————————————————————

    冒泡排序的经典应用是求逆序对,排序时每个逆序对都会被交换。冒泡算法就是所有逆序对改变位置和顺序,使其变成顺序对。

    也就是说本题中发生口角的妹子间一定是逆序对。

    那么除去逆序对,剩下的显然就是一个LIS。

    然而写挂了

    【问题背景】
    zhx 和他的妹子(们) 做游戏。
    【问题描述】
    考虑 N 个人玩一个游戏,任意两个人之间进行一场游戏(共 N*(N-1)/2 场),
    且每场一定能分出胜负。
    现在, 你需要在其中找到三个人构成剪刀石头步局面: 三个人 ABC
    满足 A 战胜 BB 战胜 CC 战胜 A

    【输入格式】
    第一行一个正整数 N, 表示参加游戏的人数。
    接下来 N 行, 每行 N 个数 0/1,中间没有空格隔开。第 i 行第 j 列数字为 1
    表示 i 在游戏中战胜了 j。 所有对角线元素(即第 i 行第 i 个元素) 为 0, 保证数
    据合法。
    【输出格式】
    如果存在三个人构成剪刀石头布局面, 输出三个人的编号(从 1 开始)。
    如果不存在这样的三个人, 输出一个数-1
    【样例输入】
    5
    00100
    10000
    01001
    11101
    11000
    【样例输出】
    1 3 2
    【数据规模与约定】

    50% 1<=N<=500

    80% 1<=N<=1000

    100% 1<=N<=5000

    ————————————————————————————————

    一眼看去就是求一个三元环,直接暴力的话能过80%的数据 然而写挂了

    网上一搜才知道这叫竞赛图QWQ

    竞赛图是通过在无向完整图中为每个边缘分配方向而获得的有向图。 也就是说,它是一个完整图形的方向,等价于一个有向图,其中每对不同的顶点通过单个有向边连接,即每对顶点之间都有一条边相连的有向图称为竞赛图。

    首先,很显然竞赛图没有二元环,并且一个任意长度的合法环都可以变成一个三元环。

    考虑12345这样一个环。根据竞赛图的性质,这个环中的任意两点间都有一条有向边相连。

    在知道12345是一个环,其他边不清楚方向的情况下,我们先任选一个点。

    比如说先选1。从搜索树中向下走,走到2。再走到3。走到3之后,如果3和1的边是由3到1的,找到3元环。退出。

    反之,我们就不去管2了,考虑134是否组成三元环。如果还不组成,那么1和4的边一定是1指向4。这样在最后判断145时就构成了一个三元环。

    因此可知,一个任意长度的合法环都可以变成一个三元环。

    由此问题简化了在图中找一个环。

     网上大佬的代码

  • 相关阅读:
    Android 5.0 + IDA 6.8 调试经验分享
    UVA 10003
    欧拉项目010:2000000以内的素数和
    Intellij IDEA 配置Subversion插件
    Intellij IDEA 配置Subversion插件时效解决方法
    javascript 关键字不能作为变量来使用
    JavaScript 闭包(个人理解)
    启动IntelliJ IDEA 2016报错:cannot start under Java 1.7 : Java 1.8 or later is required 解决办法
    jquery easyui tree异步加载子节点
    10.2.1itools导入不了歌曲
  • 原文地址:https://www.cnblogs.com/hkttg/p/9378063.html
Copyright © 2020-2023  润新知