zoukankan      html  css  js  c++  java
  • 一模 (6) day1

    第一题:

    题目大意:

    一个n的全排列A[i]是单峰的,当且仅当存在某个x使得A[1]<A[2]<...<A[x]>A[x+1]>...>A[n]。 试求 n 的单峰全排列的个数 mod 1234567。n<=2 000 000 000

    解题过程:

    1.首先 所谓的 ”峰“ 必定是数字n,那么根据n的位置来讨论,可以发现,n在第i个位置的方案数是  C(n-1,i-1);因此总方案数就是 sum { C(n-1,0...n-1) };

    根据二项式定理 sum { C(n-1,0...n-1) } = (1+1) ^ (n-1) = 2^(n-1); 利用快速幂计算即可。

    第二题:

    题目大意:

    有一个 M 行 N 列的点阵,相邻两点可以相连。一条纵向的连线花费一个单位,一条横向的连线花费两个单位。某些点之间已经有连线了,试问至少还需要花费多少个单位才能使所有的点全部连通。 m,n<=1000

    解题过程:

    1.既然要连通,那么自然想到最小生成树,可是边的数量会很多,而kruskal算法是要用 (ElogE)的时间排序的。肯定超时。

    2.进一步思考,边的权值无非只有3种,已经连好的为0,纵向边为1,横向边为2,那么只要按0,1,2的顺序来存就可以得到有序的边集数组了,然后就是传统的kruskal。

    第三题:

    题目大意:给出n对关系,表示字母X和Y必须相邻(也就是字符串中必须出现过”XY“或者”YX“), 求出字典序最小的字符串,满足给出的n对关系且长度为n+1;

    解题过程:

    1.把字母虚拟成点,把关系描述成边,那么本题其实就是求一个欧拉路。

    2.求出奇点的个数cnt,如果不为0或者2 就输出无解。

    3.如果cnt=0,那么从编码小的字母开始搜即可,如果cnt=2,必须从奇点出发。

  • 相关阅读:
    静态绑定与动态绑定
    面向对象三大基本特性和五大基本原则
    构造函数与析构函数
    Longest Substring Without Repeating Characters
    第九周总结
    团队开发冲刺日(五)
    团队开发冲刺日(四)
    团队项目开发冲刺日(三)
    团队项目开发冲刺日(二)
    团队项目开发冲刺日(一)
  • 原文地址:https://www.cnblogs.com/vb4896/p/3940016.html
Copyright © 2011-2022 走看看